将选择器输出分配给数组--JQuery

时间:2012-02-20 12:07:43

标签: jquery

var arr = $(".producttypeid");
var premiumtypecodes = Array(arr.length);
for (var i = 0; i < arr.length; i++)
    premiumtypecodes[i] = arr[i].value;

以上代码似乎不起作用。目的是将输出分配给数组。我遗失的任何东西。 为什么这个简单的代码不起作用?推理会受到高度赞赏....

根据反馈,我正在添加样本标记并添加详细信息,以使我的意图毫不含糊。

<input class="producttypeid" type="hidden" value="512">

我想使用样式producttypeid从所有标签中提取值并创建一个数组

4 个答案:

答案 0 :(得分:3)

我是这样做的:

var arr = $(".producttypeid");
var premiumtypecodes = [];
arr.each(function(index) {
    premiumtypecodes[index] = this.value;
});

假设所有匹配元素都是input个元素(因为使用了value)。如果其中一些元素可能是textareaselect元素,则将迭代器函数内的行更改为:

    premiumtypecodes[index] = $(this).val();

如果它们根本不是表单字段,则必须通过其“值”来定义您的意思(例如,您可以使用$(this).text()来获取其文本内容,或$(this).html()获得他们的标记,或其他完全的东西)。

我没有立即发现您的版本存在任何问题,除了i之后您错过了var

for (var = 0; i < arr.length; i++)
//       ^--- here

除此之外,它应该有效,但请注意,尽管Array(arr.length)有效,但通常的编写方式是new Array(arr.length)(并且不需要预先设置长度; JavaScript数组{ {3}}所以你没有得到这样做的通常好处。)

答案 1 :(得分:1)

jQuery为这种事情提供了帮助方法......

var premiumtypecodes = arr.map(function() {
    return this.value;
}).get();

请参阅map

答案 2 :(得分:0)

您应该使用makeArray() Convert an array-like object into a true JavaScript array.

的jQuery方法
var obj = $(".producttypeid");

var arr = $.makeArray(obj);

取自文档

  

jQuery和JavaScript中的许多方法都会返回   类似于数组的对象。例如,jQuery工厂函数   $()返回一个具有许多属性的jQuery对象   数组(长度,[]数组访问运算符等),但不是   与数组完全相同,缺少一些数组的内置功能   方法(例如.pop()和.reverse())。

     

请注意,转换后,该对象具有任何特殊功能   (例如我们示例中的jQuery方法)将不再存在。   该对象现在是一个普通数组。

答案 3 :(得分:0)

以下是我的表现

var arr = [];

$(&#34; .producttypeid&#34)。每一(功能(索引,选择器){

arr.push($(selector).text());

});