我的HTML:
<div id="dvUser">
<table id="tblUser" >
<tbody>
<tr>
<td>
<input class="sfCheckBox" type="checkbox" title="view" checked="checked">
</td>
</tr>
<tr>
<td>
<input class="sfCheckBox" type="checkbox" title="edit">
</td>
</tr>
</tbody>
</table>
</div>
和Jquery:
$('#spnBtnSave').live("click", function() {
var checks = $( #dvUser tr:gt(0)').find('input.sfCheckbox:checked');
$.each(checks, function(index, item) {
if ($(this).attr("checked")) {
alert($(this).closest('table').attr('id'));
alert("test");
}
});
警告返回空白。无法返回table
属性id
。我的错误是什么。谢谢。
答案 0 :(得分:1)
这些是我做的事情,这是一个有效的jsFiddle:
- $.each
循环可以在一组对象上调用,因此您不必创建单独的数组。
- 我在input.sfCheckBox:checked
中修复了大写字母,以前是Checkbox
,html示例使用了类CheckBox
- 我将您的选择器合并为此$( '#dvUser input.sfCheckBox:checked')
的复选框
- 您只选择已检查的输入,因此您无需测试是否在each
循环中再次检查它们
$('#spnBtnSave').live("click", function() {
$( '#dvUser input.sfCheckBox:checked').each(function() {
alert($(this).parents('table').attr('id'));
alert("test");
});
});
答案 1 :(得分:0)
试试这个$(“#dvUser”)。find(“table”)。attr(“id”);
答案 2 :(得分:0)
//cache you vars
var Tbl = $("table#tblUser"),
Btn = $("#spnBtnSave"),
Row = Tbl.find("tr").filter(":first").find("input[type=checkbox]");
Btn.bind('click', function(){ // only one instance of the button so use bind instead
$.each(Row, function(){ //dont need key indexes here
if($(this).is(":checked")){
alert($(this).parents("table").attr("id"));
}
});
});
答案 3 :(得分:0)
您应该避免使用live
,因为它在jQuery 1.7中已弃用,而是使用on
。
$('#spnBtnSave').on("click", function() {
$('input.sfCheckbox:checked').each(function(){
var table_id = $(this).parents('table').attr('id');
alert(table_id);
});
});