2014-02-13 57 views
0

我有一个包含选择列表的变量,那么我需要筛选并找到具有值为'EventType'的dependsOn属性的那些变量。如何在JQuery中通过属性查找元素?

我试过以下,但没有找到该选择并返回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()); 
     }); 
+1

你能张贴您的HTML? – Anton

+1

''''在'.....'后面缺少';' –

+0

'alert($(“select [dependsOn = EventType]”)。 – gvee

回答

5

如果该属性是实际select标签,只是做:

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

虽然dependsOn似乎并不像一个有效的属性。检查自定义data-*属性以具有完全有效的HTML。

0

如果使用data属性

那么你可以做:

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

find()来选择子元素,如果你想针对select元素,你可以使用:

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

试过了,没有工作 –

+0

@TheLight确保在你的HTML标记中你的'select'元素有这个属性'data-dependsOn =“EventType”' – Felix

0

尝试与你的浏览器的控制台(我使用铬),并使用此:

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

它对我来说工作得很好。 希望它有帮助!

3

参见the documentation for find

获取后裔在当前匹配的元素集合中的每个元件中,通过选择器,jQuery对象,或元件的过滤

你想用filter

减少匹配的元素集合到那些选择匹配或传递给函数的测试的。

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

或者,只是把条件在初始选择:

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