查询移动元素的数量(选择控件)不会累加

时间:2013-04-04 16:17:06

标签: jquery html jquery-mobile

当我的jQuery移动页面上的所有表单元素按类循环时,我看到许多没有ID的额外元素。这对于一些控件来说不是一个主要问题,但是在页面上有很多选择可能会浪费很多代码,其中循环内部的代码无缘无故地运行。

E.g。一个带有单个选择控件的jQuery移动页面,如下所示:

<select name="myName" id="myId" class="myClass"/></select>

...和一个看起来像这样的javascript循环:

for(g=0;g<$('.myClass').length;g++){
  alert(g + " - " + $('.myClass')[g].id);
}

...产生两个警报:

  • 0 -
  • 1 - myId

任何人都知道为什么有两个元素以及为什么第一个没有ID?它似乎与jQuery Mobile有关,除了原始的'标准'之外,它还创建了一个新的花式控件。

如果是这种情况,我可以使用哪种选择器,以便我只选择实际的可见选择控件?

2 个答案:

答案 0 :(得分:1)

像这样循环遍历:

$("select.myClass").each(function() {
    console.log($(this).attr("id"));
});

这将输出具有类myClass

的每个元素的ID

演示:http://jsfiddle.net/ypWss/2/

答案 1 :(得分:0)

简单方法,使用$.each()

<强> Demo

// Find all selects with .myClass
var list = $(document).find('select.myClass');

// Read the result
$.each(list, function () {
 console.log($(this).attr('name')+' : '+$(this).attr('id'));
});

您可以将它们推入数组。

<强> Demo

// Create an Array
var selects = [];

// Find all selects with .myClass
var list = $(document).find('select.myClass');

// Push id of each select
if (list.length > 0) {
 $.each(list, function () {
  selects.push({
   'id': $(this).attr('id')
  });
 });
}

// Read the array
$.each(selects, function (i, v) {
 console.log(v.id);
});