我对每个()和.each()感到困惑...我想我需要两者都用,但我不确定如何...
基本上,我有一系列的复选框,当它们被选中时,我希望获得最近的表行的id,并将其添加到一个数组中,然后我可以序列化该数组并将其传递给一个函数。
因此,html如下所示:
Send
并且,当复选框被选中时,我希望获得最接近的tr id并将其存储在一个数组中:
var trids = []
然后序列化输入数据和trids数组。
到目前为止,我只有以下内容:
$('#tsid').click(function() {
//meant to get the values of the selected checkboxes
var myData = $('input[name=did[]]').serialize();
//meant to find and store the closest tr ids in an array...
$('.bd').each(function() {
var trids = $(this).closest("tr").get(0); //and now I'm lost...
});
}
发布于 2010-03-31 01:58:30
它应该是:
$('.bd:checked').each(function() {
trids.push($(this).closest("tr").attr('id')); // instead of var trids = ....
});
$('.bd:checked')
仅选中选中的复选框。closest('tr')
获取父级
tr
因为你已经做对了。attr('id')
获取id
这个tr
。没有必要在get(0)
作为closest()
已经只选择了一个元素。
然后将该值添加到数组中trids
通过使用push()
方法。
更新:jQuery的.searialize()
函数从表单元素的值中生成字符串,例如:
field1=value1&field2=value2&...
我不认为它能在数组上工作。我所知道的唯一解决方案是自己为数组生成字符串:
var myData = $('input[name=did[]]').serialize();
for(var i = 0; i < trids.length; i++) {
myData += '&trid[]=' + trids[i]; or // '&trid%5B%5D=' have it encoded.
}
这会将数组值附加到序列化的字符串中。
但我想有一个更好的解决方案。
发布于 2010-03-31 02:04:18
只需获取元素,然后使用map
函数从每个tr元素获取id。使用get
方法以数组形式而不是jQuery对象的形式获取结果。
var trids = $('.bd').map(function(i,e){ return $(e).closest('tr').attr('id'); }).get();
发布于 2021-02-25 17:46:36
这段代码适用于我
$(document).ready(function () {
var checkbox_values= [];
$('input[type="checkbox"]').change(function() {
if(this.checked) {
$(this).each(function(){
var checked_value = $(this).val();
checkbox_values.push(checked_value);
});
console.log( "checked_value: " + checkbox_values);
//output checked_value: 232
//output checked_value: 232,234
//output checked_value: 232,234,676
} else {
console.log('not checked');
}
});
});
https://stackoverflow.com/questions/2547395
复制相似问题