用于AJAX的JQuery数组

时间:2011-04-27 11:21:24

标签: jquery ajax arrays

我对自己的能力并不过分自信但是这里有。我希望JQuery找到具有特定类的所有元素的数据属性。然后我希望它将它们添加到ajax dataString数组。

该类有6个元素,所有元素都具有data属性。而不是将它们全部包含在id属性中,它们确实是一种更简单的方法。这会有用。

这是

var data[] = $('.sidescroller').attr('data');

var dataString = 'function=' + scripts + '&data[]=' + data[];

//execute PHP
$.ajax({
        type: 'POST',
        data: dataString,
         url: '<?php echo $thisposturl;?>?scripts',

任何想法如何做。

非凡

5 个答案:

答案 0 :(得分:3)

首先,不,.attr()只会获取列表中第一个元素的属性

var data = $('.sidescroller').map(function() {
    return $(this).attr('data');
}).get();

其次,不要手工构造查询参数,它容易出错,也可能被滥用:

将数据参数作为一组键值对发送:

data: {
    'function': scripts,
    'data': data
}

答案 1 :(得分:0)

我认为.attr()函数适用于匹配元素中的第一个元素,更好的方法是使用map函数。

var dataArr = [];
$(".sidescroller").map(function(){
    dataArr.push($(this).attr("data"));
});

答案 2 :(得分:0)

根据HTML5 specs.自定义data,属性应如下命名:data-name。然后,您可以使用.data来获取数据。示例如下:

<强> HTML

<div id="foo" class="has-data" data-test="foo"></div>
<div id="bar" class="has-data" data-test="bar"></div>

<强>的JavaScript

var data = {};
$(".has-data").each(function(){
    data[this.id] = $(this).data("test");
});

$.post('/', data);

答案 3 :(得分:0)

var dataString = 'function=' + scripts;

$('.sidescroller').each(function() {
    dataString += '&data=' + $(this).attr('data');
}       

//execute PHP
$.ajax({
 type: 'POST',
 data: dataString,
 url: '<?php echo $thisposturl;?>?scripts',

这会有用吗?

答案 4 :(得分:0)

我认为你在寻找的是

var data= [];
$('.sidescroller[data]').each(function(){
    data.push($(this).attr('data'))
});
var strdata = data.join(",");
alert(strdata );

您可以找到工作样本here