我与第三方库交互,要求我从函数中返回DOM元素:
option: function () {
var option = $('<div>');
return option[0];
}
执行此操作会导致库抛出错误:
未捕获的TypeError:对象#没有方法&#39;替换&#39;
然而,这样做很好:
option: function () {
return '<div>' + '</div>';
}
我认为这两个表达方式是相同的,但显然它们不是。我如何使用jQuery语法,但是以与第二个语句相同的方式表达结果?
作为参考,这里是导致此问题的第三方代码片段:
// render markup
html = self.settings.render[templateName].apply(this, [data, escape_html]);
// add mandatory attributes
if (templateName === 'option' || templateName === 'option_create') {
html = html.replace(regex_tag, '<$1 data-selectable');
}
答案 0 :(得分:2)
如果你需要一个字符串,你可以尝试这样的东西来创建一个新的jquery元素并返回字符串:
$('<div>')[0].outerHTML
或通过选择器引用现有元素
$('.className')[0].outerHTML
$('#idName')[0].outerHTML
答案 1 :(得分:2)
它们甚至不相同。 '<div>' + '</div>'
(与'<div></div>'
相同,但可能是您的真实代码更复杂)只是一个字符串。不是XML DOM对象(节点,元素,任何东西)。只是一个普通的花园品种。
现在,'<div>'
也是一个字符串,但是当你将它传递给jQuery的$
函数时,你得到的是一个表示实际<div>
DOM元素的对象。完全不是一个字符串。