如何将其转换为影响所有值的全局javascript函数

时间:2010-12-07 12:21:59

标签: javascript jquery arrays function load

此代码通过jQuery加载一个基于复选框的单击事件的页面。

function product_analysis(address, box) {
    if (box.checked) {
        $('#product_' + box.alt).load(address);
    } else {
        $('#product_' + box.alt).load('http://www.divethegap.com/update/blank2.html');
    }
    document.getElementById('product_quantity_PRI_' + box.alt).value = box.value;
};

onclick事件如下onclick="product_analysis('http://www.samedomain.blahblahblah', this)

我需要的是,对于已在页面加载中勾选的所有复选框,将此功能应用于所有复选框。我对javaScript有相当的信心,但是当谈到对象和数组时,我迷失了。

非常感谢,

5 个答案:

答案 0 :(得分:2)

您可以使用此代码查找当前选中的所有复选框:

$(':checkbox:checked')

如果您想对所有这些内容执行某些操作,可以使用each函数,如下所示:

$(':checkbox:checked').each(function() {

  // alerts the checkbox for example
  // "this" referes to the checkbox, one after the other
  alert(this); 

})

或者执行您要求的操作(“对于已在页面加载中勾选的所有复选框,将此功能应用于所有”):

$(':checkbox:checked').each(function() {

  product_analysis("someaddress", this);

})

编辑:要解决第二个问题(不是原始问题的一部分,而是下面的评论):

我会假设你的标记中有这样的字段。当然,使用一些有意义的ID,而不是我的愚蠢的例子。

<input type="checkbox" id="foo" />
<input type="checkbox" id="bar" />
<input type="checkbox" id="baz" />

然后你将把以下内容放入你的JS:

var addresses = {
   foo: 'some_address',
   bar: 'some_other_address',
   baz: 'yet_another_one'
};

$(':checkbox:checked').each(function() {
  product_analysis(addresses[this.id], this);
})

这将使用与复选框的ID对应的地址调用product_analysis。

编辑(再次):

实际上有一种方法可以将元数据直接添加到我不知道的html标签中。您可以将带有“data-”前缀的属性添加到标记中,如下所示:

<input type="checkbox" data-address="someaddress" data-foo="something else" data-bar="more data!" />

您可以在John Resigs blog上了解更多相关信息。

答案 1 :(得分:0)

这是必需的脚本

$().ready(function(){
    var box, address;
    $(":checkbox").each(function(){
           box = this;
           if (box.checked) {
               address = ""; //you can set address either in hidden fields or in metadata
               $('#product_' + box.alt).load(address);
           }
           else {
                $('#product_' + box.alt).load('http://www.divethegap.com/update/blank2.html');
           }           
           document.getElementById('product_quantity_PRI_' + box.alt).value = box.value;
    });
});

答案 2 :(得分:0)

如果在选中复选框时有一个名为“已选中”的类,则可以执行以下操作

$('.selected').function(element){product_analysis(address, element)};

答案 3 :(得分:0)

您需要检查检查了多少支票,然后调用您的代码。

var checkLength = checkObj.length;

for(var i = 0; i < checkLength ; i++) {
 if(radioObj[i].checked) {
 }
// here your code base on check box status
}

答案 4 :(得分:0)

感谢各位帮忙,我得到了你的帮助。雅各布可能会认为这是一个黑客攻击,但它是一个数据驱动的站点,基于我有限的技术知识,每次添加新产品时都不能修改JS文件。

function product_analysis_global() {

    $(':checkbox:checked').each(function() {
    $('#product_' + this.alt).load(this.title);
});
}

function product_analysis(box) {
    if (box.checked) {

    $('#product_' + box.alt).load(box.title);

    }
    else {

    $('#product_' + box.alt).load('http://www.divethegap.com/update/blank2.html');
    }
    document.getElementById('product_quantity_PRI_' + box.alt).value = box.value;


};