2017-07-31 24 views
0

我在jQuery中选择表格的单行时出现问题,这个表格有一个类0123',然后定义了一个可变数字,所以我的第一行将有一个类edit1,第二个edit2等等。在单个表格行上工作的点击事件?

我的问题是,我可以触发表中最后一行的click事件,我明显知道为什么,但我找不到有关如何实际动态选择这些行的信息。

我试图。每个方法是这样的:

$('table tr').each(function(){ 
     $('.edit{{server->id}}').on('click', function(){ 
       $(this).attr("contenteditable", "true"); 
       $(this).addClass('form-group'); 
       $('div.editable').addClass('form-control'); 
       $('div.hidbtn').removeAttr('hidden'); 
     }); 
}); 

而且这显然不工作,因为在这里我只是{{server->id}}是指从创建该行一个foreach拍摄的最后{{server->id}}

我怎样才能把它放在一个方式来选择每一行,并为每一个点击事件?

脚本内的foreach?

我很抱歉,如果这会导致这样一个愚蠢的问题..

我使用Laravel 5.4的方式。

在此先感谢!

+0

的是每'.edit'你将事件绑定到每个'内部tr'? – debute

+0

你并没有在这里发生任何事件,你正在附加事件处理程序。如果你想把click处理程序附加到所有的元素上,那么只需使用一个普通的类或者基于结构的不同的选择器来选择它们。在课程名称中加入“编号”是非常荒谬的。 – CBroe

+0

客户不知道做了多少个循环,但他可以计算'tr'。您可以为PHP中的每一行生成'on('click')'代码,或者为了这个目的回显代码来构建一个数组或'id'。但是,如另一条评论所述,如果您从不使用类来逐个选择元素,则可以更改为通用类'edit'。如果你这样做,也许最好添加第二个泛型类,以便能够一次选择所有元素来绑定处理程序 – Kaddath

回答

0

当您通过每个tr遍历表并需要将事件绑定到每行内部的元素.edit时,那么您只需“查找”该元素并将事件绑定到它。

$('table tr').each(function(){ 
    $(this).find('.edit').on('click', function() { 
     ... 
    }); 
}); 
+0

我这样试过,但它甚至没有改变我需要改变的值:/ –

+0

你可以像'$(this).find('。edit')。trigger('click'); '$('table tr .edit')。触发('点击');'没有'每个'。你说我关心的是我可以触发最后一行的click事件,所以也许这是'$('table tr .edit')。last()。trigger('click');' - 也没有'each '。 – debute

0

尝试这样

var id=1; 
$('table tr').each(function(){ 
    $('.edit'+id).on('click', function(){ 
     $(this).attr("contenteditable", "true"); 
     $(this).addClass('form-group'); 
     $('div.editable').addClass('form-control'); 
     $('div.hidbtn').removeAttr('hidden'); 
    }); 
    id+=1; 
}); 

要不然这样
HTML: -

<td onclick="clickFunctio()"></td> 

jQuery的: -

function clickFunctio() { 
     $(this).attr("contenteditable", "true"); 
     $(this).addClass('form-group'); 
     $('div.editable').addClass('form-control'); 
     $('div.hidbtn').removeAttr('hidden'); 
    } 
+0

我认为你应该删除绑定函数的增量,它应该在'each' – Kaddath

+0

如果会有像'1,2,4,5'这样的ID,那么第五个元素将不会绑定,因为ID 3缺少,那么'each'将只运行4次。 – debute

相关问题