我已经“缓存”了一个名为$myElement
的循环中使用的jQuery对象。我想在其上使用一些本机JavaScript函数(以获得更好的性能)。但是,我在下面的尝试会抛出错误(元素未定义)。有没有办法实现这个目标?
$myElement.find('span')[0];
$myElement.find('span').get(0);
更新:我想做的是:
$myElement.find('span')[0].innerHTML('some text');
这给了我一个错误。
答案 0 :(得分:6)
您似乎需要
$myElement.find('span')[0].innerHTML = 'some text';
因为innerHTML不是基本DOM元素的函数。
但是没有错,如果你使用jQuery获取你的元素,也使用html函数:
$myElement.find('span').first().html('some text');
我认为你没有在正确的位置进行优化。
答案 1 :(得分:3)
.innerHTML
属性不是函数。只需使用赋值设置其内容即可。
.innerHTML = "foo";
但是在使用jQuery时要小心.innerHTML
。如果您清除这样的内容,并且任何内容都有任何数据或处理程序分配了jQuery,您将有内存泄漏。
更安全的做法是使用jQuery更新内容。
.html("foo");
答案 2 :(得分:0)
您可以使用 jQuery's "first" 这样的功能:
$myElement.find('span').first();
或者使用jQuery's "eq"函数通过索引获取nth-child,如下所示:
$myElement.find('span').eq(3);
或者你也可以使用 jQuery's "get" 函数返回该匹配的DOM实例:
$myElement.find('span').get(2);
正如您在此示例中所看到的那样: