检测jQuery是否删除了元素

检测jQuery是否删除了元素,jquery,Jquery,嗯 因此,我: <ul> <li>hello</li> <li>bye</li> </ul> 但我有: if($('ul li').length == 0){ $('ul').append('<li>You haven\'t favourited anything. Get to it!</li>'); } if($('ul li')。长度==0){ $('ul')

因此,我:

<ul>
<li>hello</li>
<li>bye</li>
</ul>
但我有:

if($('ul li').length == 0){
        $('ul').append('<li>You haven\'t favourited anything. Get to it!</li>');    
    }
if($('ul li')。长度==0){
$('ul').append('li>你没有喜欢任何东西。开始吧!');
}

但它不起作用

这将在加载文档时检查列表项,如果用户单击所有列表项:

$(document).ready(function() {

checklist();

$('li').click(function(){
 $(this).remove();
 checklist();
})

function checklist() {
    if($('ul li').length == 0) $('ul').append('<li>You haven\'t favourited anything. Get to it!</li>'); } 

 });
$(文档).ready(函数(){
检查表();
$('li')。单击(函数(){
$(this.remove();
检查表();
})
功能检查表(){
if($('ul li').length==0)$('ul').append(“
  • 你没有喜欢任何东西。开始吧!
  • ”);} });

    这将在加载文档时检查列表项,如果用户单击所有列表项:

    $(document).ready(function() {
    
    checklist();
    
    $('li').click(function(){
     $(this).remove();
     checklist();
    })
    
    function checklist() {
        if($('ul li').length == 0) $('ul').append('<li>You haven\'t favourited anything. Get to it!</li>'); } 
    
     });
    
    $(文档).ready(函数(){
    检查表();
    $('li')。单击(函数(){
    $(this.remove();
    检查表();
    })
    功能检查表(){
    if($('ul li').length==0)$('ul').append(“
  • 你没有喜欢任何东西。开始吧!
  • ”);} });
    $('li')。单击(函数(){
    $(this.remove();
    如果($('ul li')。长度==0){
    $('ul').append('li>你没有喜欢任何东西。开始吧!');
    }
    });
    
    如果将If语句放在回调之外,则基本上在页面加载时测试“no li元素”。您希望在删除一个元素后测试“无li元素”,因此正确的做法是在删除一个元素后进行测试。:)

    $('li')。单击(函数(){
    $(this.remove();
    如果($('ul li')。长度==0){
    $('ul').append('li>你没有喜欢任何东西。开始吧!');
    }
    });
    

    如果将If语句放在回调之外,则基本上在页面加载时测试“no li元素”。您希望在删除一个元素后测试“无li元素”,因此正确的做法是在删除一个元素后进行测试。:)

    我认为您需要的是将
    if
    块放入
    单击
    处理程序中,这样它将在删除元素后重新计算,然后添加该消息。实际上,它只在页面加载时运行一次,以后再也不会运行。

    我认为您需要将
    块放入
    单击
    处理程序中,这样它将在删除元素后重新计算,然后添加该消息。实际上,它只在页面加载时运行一次,再也不会运行。

    它似乎工作正常,下面是一个JSFIDLE:

    //使用jQuery 1.7的`.on()`函数将事件处理程序委托给click事件
    $('ul')。在('click','li',function()上{
    //删除单击的“
  • ”元素 $(this.remove(); //检查是否还有剩余的`
  • `元素 如果($('ul li')。长度==0){ //如果没有`
  • `元素,则添加一个带有默认消息的元素 $('ul').append('li>你没有喜欢任何东西。开始吧!
  • '); } });
    它似乎工作正常,下面是一个JSFIDLE:

    //使用jQuery 1.7的`.on()`函数将事件处理程序委托给click事件
    $('ul')。在('click','li',function()上{
    //删除单击的“
  • ”元素 $(this.remove(); //检查是否还有剩余的`
  • `元素 如果($('ul li')。长度==0){ //如果没有`
  • `元素,则添加一个带有默认消息的元素 $('ul').append('li>你没有喜欢任何东西。开始吧!
  • '); } });
    单击后,您需要检查是否存在任何li:

    $('li').click(function(){
        $(this).remove();
        checkLiLength()
    })
    
    function checkLiLength(){
        if($('ul li').length == 0){
            $('ul').append('<li>You haven\'t favourited anything. Get to it!</li>');    
        }
    }
    
    $('li')。单击(函数(){
    $(this.remove();
    checkLiLength()
    })
    函数checkLiLength(){
    如果($('ul li')。长度==0){
    $('ul').append('li>你没有喜欢任何东西。开始吧!');
    }
    }
    
    更新小提琴:

    单击后,您需要检查是否存在任何li:

    $('li').click(function(){
        $(this).remove();
        checkLiLength()
    })
    
    function checkLiLength(){
        if($('ul li').length == 0){
            $('ul').append('<li>You haven\'t favourited anything. Get to it!</li>');    
        }
    }
    
    $('li')。单击(函数(){
    $(this.remove();
    checkLiLength()
    })
    函数checkLiLength(){
    如果($('ul li')。长度==0){
    $('ul').append('li>你没有喜欢任何东西。开始吧!');
    }
    }
    
    更新小提琴:

    我查看了我的水晶球,这似乎是一个动态列表,您可以在其中添加元素,然后删除它们并再次添加,依此类推

    如果是这样,则不能使用bind,但需要在更高级别的元素中使用事件委派,如下所示:

    $('ul').delegate("li", "click", function(){
    $(this).remove();
    
        if($('ul li').length <= 0){
            $('ul').append('<li>You haven\'t favourited anything. Get to it!</li>');    
        }
    })
    
    $('ul')。委托(“li”,“click”,function()){
    $(this.remove();
    
    if($('ul li').length我查看了我的水晶球,这似乎是一个动态列表,您可以在其中添加元素,然后删除它们并再次添加,依此类推

    如果是这样,则不能使用bind,但需要在更高级别的元素中使用事件委派,如下所示:

    $('ul').delegate("li", "click", function(){
    $(this).remove();
    
        if($('ul li').length <= 0){
            $('ul').append('<li>You haven\'t favourited anything. Get to it!</li>');    
        }
    })
    
    $('ul')。委托(“li”,“click”,function()){
    $(this.remove();
    
    if($('ul li').length if语句位于哪里?我想我们需要查看代码的其余部分:)if语句位于remove()下面functionNo,separate,我认为它可能需要进入click Handler到底什么不起作用?似乎可以正常工作:是的,这是有意义的。如果您希望它在单击一个后检查并添加新的。if语句在哪里?我想我们需要查看您的其余代码:)if语句在remove()下面功能否,单独,我认为可能需要进入“单击手柄”中到底什么不起作用?似乎工作正常:是的,这很有意义。如果您希望它在他们单击一个手柄后检查并添加新的手柄。