Jquery 使用一个父项切换输入。单击()操作
我很难找到合适的方法使它工作: 我得到了一张有多个单元格的表格:Jquery 使用一个父项切换输入。单击()操作,jquery,toggle,Jquery,Toggle,我很难找到合适的方法使它工作: 我得到了一张有多个单元格的表格: $('tr > td').click(function() 每次单击单元格时,我都会向该单元格添加一个输入和两个按钮(一个按钮用于验证,另一个按钮用于删除单元格中的整个内容,因此它会删除输入和两个按钮) 问题是当我点击删除按钮时,它也会触发 $('tr > td').click(function() 因此,它所做的是删除输入和2个按钮,但将其添加回 我需要的是: 如果单元格为空:添加输入+2个按钮 如果单击了删除按
$('tr > td').click(function()
每次单击单元格时,我都会向该单元格添加一个输入和两个按钮(一个按钮用于验证,另一个按钮用于删除单元格中的整个内容,因此它会删除输入和两个按钮)
问题是当我点击删除按钮时,它也会触发
$('tr > td').click(function()
因此,它所做的是删除输入和2个按钮,但将其添加回
我需要的是:
如果单元格为空:添加输入+2个按钮
如果单击了删除按钮:从单元格中删除输入+2个按钮
单元格只能有1次输入和2个按钮(因此没有多个输入和2个以上按钮)
我一直试图通过使用toggleClass和hasClass中的if语句来纠正这个错误
但它从来没有像我想的那样
谢谢你的帮助,希望你能弥补我的逻辑不足
编辑:
function remove()
{
event.stopPropagation();
$(this).parent().
$(this).parent().toggleClass('removed');
$(this).prev().prev().remove();
$(this).next().next().remove();
$(this).remove();
}
$('tr > td').click(function(event)
{
if ($(this).hasClass("done") == false && $(this).hasClass("removed") == false)
{
$(this).toggleClass("done");
$(this).append("<input class='form-control' style='height:25px;width:105px;' type='text'></input>");
$(this).append("<button onclick='remove();' type='button' id='removeUser' class='btn btn-xs'><span class='text-danger glyphicon glyphicon-remove'></span></button>");
$(this).append("<button type='submit' id='addUser' class='btn btn-xs'><span class='text-success glyphicon glyphicon-ok'></span></button>");
}
函数删除()
{
event.stopPropagation();
$(this).parent()。
$(this.parent().toggleClass('removed');
$(this.prev().prev().remove();
$(this.next().next().remove();
$(this.remove();
}
$('tr>td')。单击(函数(事件)
{
if($(this.hasClass(“done”)==false&$(this.hasClass(“removed”)==false)
{
$(this.toggleClass(“完成”);
$(此)。追加(“”);
$(此)。追加(“”);
$(此)。追加(“”);
}
TD只能有1个[输入+2个按钮]
如果单击删除按钮,[input+2按钮]将被删除
如果单击了TD且TD为空,则添加[input+2按钮]
抱歉迟到了,现在是发布时间:)
这也可以防止在按钮的父级上触发单击。因此,当您单击按钮时,使用此功能也可以避免在td上触发单击
如果删除e.stopPropagation
,div上也会出现警报。因此,现在您知道如何使用它了
请记住将按钮单击处理程序从更改为。单击(function(){…
为。单击(function(event){…
或。单击(function(e){…
),就像我在演示中所做的那样,这样您就可以使用该方法
编辑以回答您的编辑
改变这个
$('tr > td').click(function(event)
{
对此
$('tr > td').click(function(event)
{
event.stopPropagation();
并从remove()
函数中删除event.stopPropagation
event.stopPropagation()
进一步阅读:试试这个:
$('tr > td').click(function(event){
event.stopPropagation();
alert("The element was clicked.");
});
单击按钮停止传播,但如果删除,则必须添加[输入+2个按钮]再次说明如何解决?您的问题是关于事件冒泡。您是否尝试使用这些建议修复代码?您是否要求我们向您提供您尝试执行的操作的完整代码?您能更好地解释吗?谢谢。它不应该在移除函数上吗?因为[input+2buttons]是父代的子代是的,但它无论如何都会工作,我不想完全更改您的代码来做一些无论如何都会工作得很好的事情