0

我有这个:

$(document).on("click","#imgCancel",function(){
   $("#tbl_zones td").click(function(){
      editTables("#tbl_zones td",this)
   })
})

我正在尝试使该函数更通用,以便它可以在多个表上工作。imgCancel 在表格内,我正在制作的所有表格中都会有一个 imgCancel 。

我考虑过像这样替换第二行:

$(document).on("click","#imgCancel",function(){
   $(this).closest('table').find('td').click(function(){
      editTables("#tbl_zones td",this)
   })
})

但是,它没有用,而且我也不知道应该把什么作为 editTables 的第一个参数(它应该引用当前表中的所有 td)。

编辑:修改 jknaack 的 jsfiddle,我最终得到了这个:

$(document).on("click","#imgCancel",function(){
    var tblID = $(this).closest('table').attr('id')
    $("#"+tblID+" td").click(function(){
        editTables("#"+tblID+" td",this)
    })
})
4

3 回答 3

0

问题是 id 在您的文档中必须是唯一的,请改用 class 属性。

w3c id 属性为 HTML 元素指定一个唯一的 id(id 属性值在 HTML 文档中必须是唯一的)。

于 2012-05-02T18:25:42.130 回答
0

只需使用内部 id (假设它包含一个 td 元素)

$(document).on("click","#tbl_zones td", function(){
     editTables(this);
}); 

函数调用中的“this”将是单击的 td 元素。

于 2012-05-02T18:33:05.920 回答
0

如果我理解正确,我认为您可以使用一些方法,将可点击元素内的新选择器作为数据属性传递。

很难知道你的 HTML 会是什么样子,所以我只是做了一个例子。当然,您可以自定义选择器以仅在单击的元素内部或壁橱中进行选择。

JS代码:

$(document).on("click",".actionbuttons",function(){
   var selectedElements = $($(this).data("selector"));
    selectedElements.css("background","#FF0000");
   $(selectedElements ).click(function(){
        $(this).css("background","#00FF00");
   })
})​

HTML 示例:

<img class="actionbuttons" src="/" data-selector=".test1"/>
<div class="test1"></div>
<div class="test1"></div>
<div class="test1"></div>
<img class="actionbuttons" src="/" data-selector=".test2"/>

<div class="test2"></div>
<div class="test2"></div>
​

http://jsfiddle.net/Ft7SB/

于 2012-05-02T18:51:44.773 回答