0

我知道 jQuery 选择器返回匹配 DOM 元素的对象,例如

typeof $('p'); // returns "object"

但是当我尝试访问对象中的所有元素时,似乎唯一的效果是第一个,例如

$('p').html('test'); // only sets the first <p></p> to test

我知道我能做到

$('p').each(function() { $(this).html('test') });

但这是首选方法吗?还有其他方法可以设置质量属性吗?


编辑:对不起,伙计们,我试图访问错误的标签 :( 它与任何 jQuery 问题无关。但下面所说的一切都很有用,可能对某人有帮助,所以我不会结束这个问题。

4

5 回答 5

3

如果你想应用到所有的p,那么就没有必要循环了。您可以通过以下方式申请:

$("p").html('test');

jsFiddle

于 2012-09-25T15:53:51.923 回答
2

这是不正确的,jQuery.html()将设置所有匹配的元素。请参阅文档:

设置匹配元素集中每个元素的 HTML 内容。

http://api.jquery.com/html/

请参阅工作示例:http: //jsfiddle.net/zqYgQ/


但是,您是对的,某些方法仅适用于第一个匹配元素。在这种情况下,您的方法将是最佳实践:

$('p').each(function() { 
   $(this).someMethod();
});

相反,如果您希望适用于适用于所有匹配项的方法的第一个元素,则可以使用以下方法之一仅过滤/选择第一个元素:

$("p:first").method();

$("p")[0].method();
于 2012-09-25T15:55:17.663 回答
0

不,它不只设置第一个p,它会改变所有这些,例如看这个小提琴

于 2012-09-25T15:55:06.920 回答
0

事实并非如此:http: //jsfiddle.net/TjxyL/

于 2012-09-25T15:55:16.103 回答
0

不过你错了,它确实设置了所有元素,请参阅:Fiddle

<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>

<script>
    ​$('p').html('test');​
</script>
于 2012-09-25T15:55:27.507 回答