我有一个表格行,单元格中有一个按钮。当我单击该按钮时,我想将同一行的每个其他单元格内的文本分配给变量。因此,如果我有5个单元格,我将有4个变量(第5个是按钮)。
我现在所做的是:
$('.save').click(function(e){
var id = $(this).closest('tr').find('.id').text();
var x = $(this).closest('tr').find('.x').text()
});
this
指的是按钮,因此我必须向上导航到包含tr
并向下导航到每个单元格。有没有办法避免必须遍历每个变量的dom?换句话说,要关注该行而不是每次重复$(this).closest('tr')
?
注意:我不是指仅仅写它而是指后面的动作。因此var row = $(this).closest('tr')
之类的东西不是解决方案,因为无论如何都会再次执行查找行的操作。
答案 0 :(得分:3)
因此
var row = $(this).closest('tr')
之类的东西不是解决方案,因为无论如何都会再次执行查找行的操作。
不,它不会。它将执行一次(发生点击时),并且结果(包含在tr
元素周围的jQuery对象)存储在{ {1}}变量。这就是你如何做到的。
row
答案 1 :(得分:0)
我认为var tr = $(this).closest("tr")
可以解决这个问题,因为你不必再去那一行了。
答案 2 :(得分:-1)
使用dataset
属性扩展按钮标记,并在发生点击时使用所需的数据:
<button data-id="some-id" data-x="some-x" ...>
因此,您可以使用必需的属性生成此按钮,并且不需要始终检查DOM。
$('.save').click(function(e){
var id = $(this).data('id');
var x = $(this).data('x');
});