此代码通过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有相当的信心,但是当谈到对象和数组时,我迷失了。
非常感谢,
答案 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;
};