删除 <li> 标签后确定空 <ul> 标签
Determine empty <ul> tag after removing <li> tag
我想确定删除 <li>
标签后 <ul>
标签何时为空。有人可以帮助我吗?
有一个html代码:
$(document).on('click', '.close', function(e) {
$(this).parent().fadeOut("normal", function() {
$target.remove();
});
if ($(this).closest(".indexy").not(".info")) {
alert("prazdne");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="indexy">
<li class="info">ASD<button type="button" class="close">×</button></li>
<li class="info">FGH<button type="button" class="close">×</button></li>
<li class="info">JKL<button type="button" class="close">×</button></li>
</ul>
在使用要检查的选择器时使用长度属性。
if($('ul.indexy li').length < 1){
console.log('empty');
}
你可以用js做到这一点
var confirm = document.getElementsByClassName("indexy")[0].hasChildNodes();
如果它有 childNodes 或 children 它将 return "true" 到变量确认,如果没有它会 return "false"。如果这是唯一具有 class 名称的元素,则列表的索引为零。否则你将不得不迭代
我认为您不能使用 $(this)
,因为您已经将其从 DOM
中删除。 DOM
中不再有
$(document).on('click', '.close', function(e) {
$(this).parent('li').remove();
if($('.indexy li').length<1){
console.log('ul empty ');
}else{
console.log('li length is :'+$('.indexy li').length);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="indexy">
<li class="info">ASD<button type="button" class="close">×</button></li>
<li class="info">FGH<button type="button" class="close">×</button></li>
<li class="info">JKL<button type="button" class="close">×</button></li>
</ul>
你可以为你的 js 代码做这样的事情:
function removeListItem(item) {
$('#'+item).fadeOut("normal", function(){
$(this).remove();
var li = $('li.info');
alert(li.length);
if (li.length <= 0){
alert("prazdne");
}
})
}
我也对你的 HTML 做了一些改动。这是一个 li 例如:
<li id="element1" class="info">ASD<button type="button" class="close" onclick="removeListItem('element1')">×</button></li>
您没有做的一件事实际上是从 DOM 中删除列表项。
$(document).on('click', '.close', function(e) {
$(this).closest("li").remove();
if (!$(".indexy").find('li').length) {
alert("UL is empty")
}
});
我想确定删除 <li>
标签后 <ul>
标签何时为空。有人可以帮助我吗?
有一个html代码:
$(document).on('click', '.close', function(e) {
$(this).parent().fadeOut("normal", function() {
$target.remove();
});
if ($(this).closest(".indexy").not(".info")) {
alert("prazdne");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="indexy">
<li class="info">ASD<button type="button" class="close">×</button></li>
<li class="info">FGH<button type="button" class="close">×</button></li>
<li class="info">JKL<button type="button" class="close">×</button></li>
</ul>
在使用要检查的选择器时使用长度属性。
if($('ul.indexy li').length < 1){
console.log('empty');
}
你可以用js做到这一点
var confirm = document.getElementsByClassName("indexy")[0].hasChildNodes();
如果它有 childNodes 或 children 它将 return "true" 到变量确认,如果没有它会 return "false"。如果这是唯一具有 class 名称的元素,则列表的索引为零。否则你将不得不迭代
我认为您不能使用 $(this)
,因为您已经将其从 DOM
中删除。 DOM
$(document).on('click', '.close', function(e) {
$(this).parent('li').remove();
if($('.indexy li').length<1){
console.log('ul empty ');
}else{
console.log('li length is :'+$('.indexy li').length);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="indexy">
<li class="info">ASD<button type="button" class="close">×</button></li>
<li class="info">FGH<button type="button" class="close">×</button></li>
<li class="info">JKL<button type="button" class="close">×</button></li>
</ul>
你可以为你的 js 代码做这样的事情:
function removeListItem(item) {
$('#'+item).fadeOut("normal", function(){
$(this).remove();
var li = $('li.info');
alert(li.length);
if (li.length <= 0){
alert("prazdne");
}
})
}
我也对你的 HTML 做了一些改动。这是一个 li 例如:
<li id="element1" class="info">ASD<button type="button" class="close" onclick="removeListItem('element1')">×</button></li>
您没有做的一件事实际上是从 DOM 中删除列表项。
$(document).on('click', '.close', function(e) {
$(this).closest("li").remove();
if (!$(".indexy").find('li').length) {
alert("UL is empty")
}
});