jQuery中类似于getElementsByTagName的方法是什么?

36

getElementsByTagName()在jQuery中的等效方法是什么?我只想在jQuery中创建一个元素集合,以便可以迭代其中的每个项并对其执行某些操作。

非常感谢!

4个回答

48
$("tagnamehere")
所以:
$("div").each(function() {
    // do something exciting with each div
    $(this).css("border", "1px solid red");

    // do something by directly manipulating the wrapped DOM element
    this.style.border = "1px solid red";

    // do something only if this particular div has a class of 'pretty'
    if($(this).hasClass("pretty")) {
        $(this).text("I am the pretty one");
    }
});

或者只需:

// apply some css to all div elements
$("div").css("border", "1px solid red");
请注意,当您使用jQuery选择多个元素时,例如$("span"),您在对象上调用的任何方法都会发生在所有匹配的元素上。可以将其视为“隐式迭代”-例如$("span").hide();将隐藏页面上的所有span元素。
请查看:

值得注意的是,我认为这涉及到 jQuery 对象,而不是 DOM 元素。 - sje397
@T.J. Crowder和karim79:有趣。那么针对集合中的特定项做些什么呢? - Shaoz
这取决于你的意思。如果你想要定位 DOM 中的特定元素,你需要“选择”它。例如,$("#myDiv") 将会获取 id 属性设置为 myDiv 的 div 元素。 - karim79
2
@Shaoz: “那么针对集合中的特定项做些什么呢?”你可以使用each循环遍历它们,就像Karim所展示的那样,或者你可以通过[]符号直接访问它们:$('div')[0].xxx; 更多信息请参见:http://api.jquery.com/get/ (你可以使用[]get(),两者都可以;get()有一些额外的功能,但如果你不需要这些功能,大多数情况下你会想要使用[]。)值得一读的是,从头到尾阅读jQuery API(http://api.jquery.com),你会更好地理解它,而且只需要一个小时左右的时间。 - T.J. Crowder
我的意思是我的元素是动态生成的,所以我需要定位集合中的特定项来执行某些操作。例如,当出现第3项时,它应该做一些事情... - Shaoz
1
@Shaoz - 你可以这样选择第三个 div:$("div:eq(2)")。这被称为 :eq 选择器。我建议你阅读我在答案中发布的链接(特别是第二个链接),以了解 jQuery 和 CSS 选择器的工作原理。 - karim79

7
只需要使用元素选择器。
$('elementname')

例如。
$('div')

进行迭代的方法:

$('div').each(function(){
    var $this = $(this);
    //insert code here
});

您可能不需要迭代,因为在集合上调用的方法将针对集合中的每个项进行调用,因此

$('div').hide();

...将隐藏所有的

元素。


2
$("[foo]") 是属性选择器,而不是元素选择器。 - Šime Vidas
我相信这是一个打字错误,因为示例使用了正确的代码,但这非常具有误导性。 - Álvaro González
2
@Šime Vidas - 是的,我使用[]来表示占位符,但我意识到那是误导性的!已相应地进行了修改。 - James Wiseman

3

给定一个字符串tagName,这个语句:

document.getElementsByTagName(tagName)

使用jQuery可以编写如下内容:

$(tagName)

给定一个原生DOM元素element和一个字符串tagName,这个语句的意思是:
element.getElementsByTagName(tagName)

使用jQuery可以编写如下内容:

$(element).find(tagName)

注意:使用getElementsByTagName可以获取原生DOM元素,而使用jQuery语句可以获取jQuery对象。如果你想使用jQuery获取原生DOM元素,可以使用get()方法 - 如何从jQuery对象中提取原生DOM元素?


-4

只需要放置类似于以下内容:

var some = $('[name="tagname"]');

1
不,那是不正确的。你的代码是属性选择器的一个例子。请参阅https://api.jquery.com/attribute-equals-selector/。 - j08691

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接