我扩展了jQuery对象以返回它的内部HTML ...
$.fn.toString = function() {
return this.html();
};
console.log("The inner HTML is: " + $("<div>Here, <i>there</i>, everywhere</div>"));
有什么理由说这不是默认行为吗?这会破坏什么吗?
首先,除了依赖于将jQuery对象强制转换为字符串以及匹配该字符串中的文本的类型检查之外,我不知道它会如何破坏。我错了吗?
这将返回集合中连接的所有元素的outerHTML
。这对任何人都有意义吗?对我来说这很有道理。
var li, list;
$.fn.toString = function() {
var out;
out = [];
$.each(this, function(k, v) {
return out.push($(v)[0].outerHTML);
});
return out.join("\n");
};
list = $("<ul>\n <li>some <a href='/'>link</a> items</li>\n <li>some <a href='/'>link</a> items</li>\n <li>some <a href='/'>link</a> items</li>\n <li>some <a href='/'>link</a> items</li>\n <li>some <a href='/'>link</a> items</li>\n</ul>");
li = $("li", list);
console.log("The html of it..: " + li);
答案 0 :(得分:9)
Object.toString
返回表示对象的字符串(来自文档)。
在谈论jQuery对象时,Object.toString
的预期返回值为"[object Object]"
。
让它返回HTML只会是糟糕的设计,并且可能会破坏内容。
另外,根据我们想要从jQuery对象中检索的内容,使用不同的显式方法是有意义的:HTML .html()
,剥离标记.text()
。
答案 1 :(得分:5)
嗯,jQuery对象不仅仅是.html
的主页。如果jQuery必须实现toString
,它应该足够通用,可以基于jQuery对象中的选择器返回。
例如,如果选择器选择了多个元素,那么您拥有的版本只会返回第一个元素html内容。
所以我想说的是toString
并不像你想象的那么简单,我也想不出toString
的任何好用法。