0

当按他们的类遍历我的 jQuery 移动页面上的所有表单元素时,我看到许多没有 ID 的额外元素。这不是几个控件的主要问题,但是页面上有很多选择,大概有很多浪费的代码,循环内的代码无缘无故地运行。

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

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

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

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

...产生两个警报:

  • 0 -
  • 1 - 我的身份证

任何人都知道为什么有两个元素,为什么第一个元素没有 ID?除了原来的“标准”控件之外,它似乎与 jQuery Mobile 创建了一个新的精美控件有关。

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

4

2 回答 2

1

像这样循环它们:

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

这将输出带有类的每个元素的 IDmyClass

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

于 2013-04-04T16:20:43.930 回答
0

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

演示

// 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'));
});

您可以将它们推入一个数组。

演示

// 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);
});
于 2013-04-04T16:46:58.500 回答