无法找到最近的桌子

时间:2011-12-29 07:30:32

标签: jquery html

我的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。我的错误是什么。谢谢。

4 个答案:

答案 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);
     });
   });

小提琴:http://jsfiddle.net/YxYWu/