Open
Description
有一段代码:
var jTd = $("td:first");
jTd.text(jTd.find(":input").val()).addClass("readonly");
结果居然报告:对象不支持“addClass”属性或方法
难道 text(param)
返回的不是 jQuery 对象?!
仔细想了下,想明白了,一般情况下是返回的 jQuery 对象,但有一种情况除外……
假设:jTd.find(":input").val()
得到的值是 undefined
呢?这时候 text(undefined)
和 text()
是一样的效果,返回的都是 innerText
。所以,要排除 text()
的参数 undefined
的情况,可以这样
jTd.text($express || "")
不过也有缺陷,比如 $express
是 0
或者 false
的时候,这里jTd就不能显示出来了。如果觉得要去判断 $express
太麻烦,那就只有一个办法:把 text()
放在最后调用,或者单独调用!比如:
var jTd = $("td:first");
jTd.addClass("readonly").text(jTd.find(":input").val());
坑爹的 text()
,还有类似的 html()
,下次得小心着用啦!