Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 使用一个父项切换输入。单击()操作_Jquery_Toggle - Fatal编程技术网

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]是父代的子代是的,但它无论如何都会工作,我不想完全更改您的代码来做一些无论如何都会工作得很好的事情