我扩展了 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);
最佳答案
Object.toString
返回表示对象的字符串(来自文档)。
在讨论 jQuery 对象时,Object.toString
的预期返回值是 "[object Object]"
。
让它返回 HTML 只是糟糕的设计,并且可能会破坏内容。
另外,根据我们想要从 jQuery 对象中检索的内容,使用不同的显式方法是有意义的:.html()
对于 HTML,.text()
用于剥离标签。
关于javascript - jQuery 对象 `toString()` 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15662542/