Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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
Javascript 仅向列表中的第一个按钮添加功能_Javascript_Jquery - Fatal编程技术网

Javascript 仅向列表中的第一个按钮添加功能

Javascript 仅向列表中的第一个按钮添加功能,javascript,jquery,Javascript,Jquery,我的HTML(精简版) 基本上,我想做的是: “创建第一个”按钮以删除父列表项 如果按钮是中唯一的按钮,请删除整个列表和另一个元素 如何才能正确执行此操作?您只需评估是否有多个元素,请尝试以下操作: $('body')。在('click','li>按钮',函数(){ 如果($('li>按钮')。长度>1)){ $(this.parent().remove(); }否则{ $(this.parents('ul').remove(); console.log('删除其他项') } })

我的HTML(精简版)

基本上,我想做的是:

  • “创建第一个”按钮以删除父列表项
  • 如果按钮是
    中唯一的按钮,请删除整个列表和另一个元素

如何才能正确执行此操作?

您只需评估是否有多个元素,请尝试以下操作:

$('body')。在('click','li>按钮',函数(){
如果($('li>按钮')。长度>1)){
$(this.parent().remove();
}否则{
$(this.parents('ul').remove();
console.log('删除其他项')
}
})

  • 去除
  • 去除

您只需评估是否有多个元素,请尝试以下操作:

$('body')。在('click','li>按钮',函数(){
如果($('li>按钮')。长度>1)){
$(this.parent().remove();
}否则{
$(this.parents('ul').remove();
console.log('删除其他项')
}
})

  • 去除
  • 去除

更改您的功能,以检查最后一个
  • 是否已删除(如下所示:
      不再有
    • ):


      更改您的功能以检查最后一个
    • 是否已删除(如下所示:
      不再有
    • ):



      如果它不是第一个按钮,那该怎么办?最后一个关闭按钮实际上应该是
      })它删除了它的父级
    • ,但我得到了这样的工作思路:)它不是我的整个JS文件,因此在进入stackoverflow时出现了语法错误。谢谢你的注意@pmahome您正在尝试查看它是否是删除后的第一个元素。您应该在删除它之前检查它。最好是在删除lis后查看是否只有lis。如果它不是第一个按钮,该怎么办?最后一次关闭
      }
      实际上应该是
      })它删除了它的父级
    • ,但我得到了这样的工作思路:)它不是我的整个JS文件,因此在进入stackoverflow时出现了语法错误。谢谢你的注意@pmahome您正在尝试查看它是否是删除后的第一个元素。您应该在删除它之前检查它。最好在删除lis后再查看是否没有lis。这不起作用。当剩下一个按钮时,它应该删除整个列表。但是更简单的代码谢谢@DaniP@Heraclitus该代码的工作原理与父类('ul')
    • 相同。父类()
    • 但更简单。。。哦,是的,你说得对!我以为这只是删除了李。毕竟,我是通过和李和ul的合作才成功的,谢谢@DaniP很高兴能帮助你@Heraclitus,如果它有用的话,别忘了把它标记为解决问题的答案。这是行不通的。当剩下一个按钮时,它应该删除整个列表。但是更简单的代码谢谢@DaniP@Heraclitus该代码的工作原理与父类('ul')
      相同。父类()
    • 但更简单。。。哦,是的,你说得对!我以为这只是删除了李。毕竟,我是通过和李和ul的合作才成功的,谢谢@DaniP很高兴能帮助你@Heraclitus,如果有用的话,别忘了把它标记为解决问题的答案谢谢!我通过和li和ul打交道,而不是和按钮打交道,让它工作起来了!为什么我以前没想到这个!非常感谢。我通过和li和ul打交道,而不是和按钮打交道,让它工作起来了!为什么我以前没想到这个!
      <ul>
         <li>
            <p></p>
            <p></p>
            <button type="button">Remove</button>
         </li>
         <li>
            <p></p>
            <p></p>
            <button type="button">Remove</button>
         </li>
      </ul>
      
      $('body').on('click', 'li > button', function() {
        $(this).parent().remove();
      
        if($('li > button').length === 1) { // if this is the only button
          $(this).parent().parent().remove(); // remove whole list
          // remove some other elements outside the list      
        }
      
        if($(this).parent().is(':first')) { // if this first li in ul 
          if (confirm("...")) {
            $(this).parent().remove();    
          }
        }
      });
      
      $('body').on( 'click', 'li > button', function() {
          var list = $(this).closest( 'ul' );
      
          $(this).parent().remove()
      
          //* if the UL is empty we can remove it altogether
          if( list ).find( 'li' ).length == 0 ) remove( list ); 
      });