检测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()下面功能否,单独,我认为可能需要进入“单击手柄”中到底什么不起作用?似乎工作正常:是的,这很有意义。如果您希望它在他们单击一个手柄后检查并添加新的手柄。