如何在JQuery中按属性查找元素?

时间:2014-02-13 16:08:12

标签: javascript jquery html css select

我有一个包含选择列表的变量,然后我需要过滤并只查找具有值为'EventType'的dependsOn属性的那些。

我尝试了以下但它没有找到select并返回0:

var selects = $("select");
var count = selects.find("[dependsOn='EventType']").length
alert(count);

我写了下面哪个有效,但是不是更方便吗?

var dependents = [];
        selectLists.each(function() {

            var dep = $(this).attr('dependsOn');
            if (dep === undefined) return;

            dependents.push(dep.val());
        });

4 个答案:

答案 0 :(得分:5)

如果该属性位于实际的select标记上,请执行以下操作:

var selects = $("select[dependsOn='EventType']"); 

虽然dependsOn似乎不是一个有效的属性。查看自定义data-*属性以获得完全有效的HTML。

答案 1 :(得分:3)

请参阅the documentation for find

  

获取当前匹配元素集中每个元素的后代,由选择器,jQuery对象或元素进行过滤。

您想使用filter

  

将匹配元素集合减少到与选择器匹配的元素或通过函数测试。

selects.filter("[dependsOn='EventType']").length

或者,只需将条件放在初始选择器中:

$("select[dependsOn='EventType']").length;

答案 2 :(得分:0)

如果您使用data属性

然后你可以这样做:

var selects = $("select");
selects.find('[data-dependsOn="EventType"]').length;
alert(count);

find()用于选择子元素,如果要定位select元素,可以使用:

var selects = $('select[data-dependsOn="EventType"]').length;
alert(count);

答案 3 :(得分:0)

尝试使用浏览器的控制台(我正在使用chrome)并使用它:

selects = $("select[dependsOn='EventType']");

它对我来说很好。 希望它有所帮助!!