选中复选框时使用jQuery检索数据
我没有使用表格,而是使用下面的HTML在第1列显示一个复选框,在第2列显示一个名称,在第3列显示一个电子邮件地址。HTML如下所示:选中复选框时使用jQuery检索数据,jquery,checkbox,next,Jquery,Checkbox,Next,我没有使用表格,而是使用下面的HTML在第1列显示一个复选框,在第2列显示一个名称,在第3列显示一个电子邮件地址。HTML如下所示: <div class="rowLight"> <div class="select"><input name="checkbox" id="chk1" class="chktbl" type="checkbox"></div> <div class="name">Mary</div><d
<div class="rowLight">
<div class="select"><input name="checkbox" id="chk1" class="chktbl" type="checkbox"></div>
<div class="name">Mary</div><div class="emayl">Mary@ABC.com</div>
</div>
<div class="rowDeep">
<div class="select"><input name="checkbox" id="chk2" class="chktbl" type="checkbox"></div>
<div class="name">Jerry</div><div class="emayl">Jerry@ABC.net</div>
</div>
Thanx,杰瑞像这样的事情可以奏效:
var data = $(".select input:checkbox:checked").map(function() {
var $parent = $(this).closest(".select");
return {
name: $parent.next(".name").text(),
email: $parent.siblings(".emayl").text()
};
}).get();
请注意,数据如下所示:
[ { name: '<name>', email: '<email>' }, ... ]
示例:
注意事项:
- 使用handy获取jQuery结果并将其转换为所需的数据
- 在
调用的末尾调用.map
,将结果对象强制放入正确的数组(与jQuery对象相反).get()
- 使用、和检索正确的数据
- 这里有一个替代解决方案,使用
rowDeep
和rowLight
来表示行
$('.rowLight,.rowDeep').each(function(i,e){
var $row = $(e);
// see if the checkbox is checked
if ($row.find('input[type="checkbox"]').is(':checked')){
var name = $row.find('.name').text(),
emayl = $row.find('.emayl').text();
alert(name + ' <' + emayl + '>');
}
});
$('.rowLight,.rowDeep')。每个(函数(即,e){
var$行=$(e);
//查看是否选中该复选框
if($row.find('input[type=“checkbox”]”)是(':checked')){
var name=$row.find('.name').text(),
emayl=$row.find('.emayl').text();
警报(名称+“”);
}
});
检查这把小提琴,打开浏览器javascript控制台,即firefox中的Chrome或firebug
根据jquery的版本,您可以使用兄弟姐妹()或下一个()。下一个()。是
.rowLight
&.rowDeep
表示行的交替DIV?您需要什么帮助?Andrew-我想将“数据”对象发送到我的PageMethod进行处理。我应该在PageMethod中定义什么类型的对象?类似于:公共共享函数wsGetEMails(ByVal数据为______________;)作为StringI我对ASP.NET不是很熟悉,但我会尝试使包含具有名称和电子邮件属性的对象的数组正常工作。这只是一个猜测,但可能是您使用这些属性定义了一个对象,然后在方法中接受这些对象的数组。
["<name1>", "<email1>", "<name2>", "<email2>"]
var data = $(".select input:checkbox:checked").map(function() {
var $parent = $(this).closest(".select");
return [ $parent.next(".name").text(), $parent.siblings(".emayl").text() ];
}).get();
$('.rowLight,.rowDeep').each(function(i,e){
var $row = $(e);
// see if the checkbox is checked
if ($row.find('input[type="checkbox"]').is(':checked')){
var name = $row.find('.name').text(),
emayl = $row.find('.emayl').text();
alert(name + ' <' + emayl + '>');
}
});