Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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 使用jQuery检查li元素是否有任何具有值的子元素_Javascript_Jquery_Html - Fatal编程技术网

Javascript 使用jQuery检查li元素是否有任何具有值的子元素

Javascript 使用jQuery检查li元素是否有任何具有值的子元素,javascript,jquery,html,Javascript,Jquery,Html,我需要检查每个li元素是否有任何值,或者是否没有使用jQuery。我在下面提供我的代码 $(“#navbarNavDropdown ul a”)。每个(函数(){ if($(this.find('li').has('ul”).length){ 警报('是的,我们有一个ul'+$(this.text()); }否则{ 警报('是的,我们没有ul'+$(this.text()); } }) 此代码将很好地适用于您 $(“#navbarNavDropdown ul a”

我需要检查每个li元素是否有任何值,或者是否没有使用jQuery。我在下面提供我的代码

$(“#navbarNavDropdown ul a”)。每个(函数(){
if($(this.find('li').has('ul”).length){
警报('是的,我们有一个ul'+$(this.text());
}否则{
警报('是的,我们没有ul'+$(this.text());
}
})


此代码将很好地适用于您

$(“#navbarNavDropdown ul a”)。每个(函数(){
如果($(this).closest('li')有('ul').length){
警报('是的,我们有一个ul'+$(this.text());
}否则{
警报('是的,我们没有ul'+$(this.text());
$(this).find('span').remove();//删除span
}
})


这将解决您的问题

$(“#navbarNavDropdown ul li”)。每个(函数(){
if($(this.find(“ul”).length){
警报('是的,我们有一个ul'+$(this.text());
}否则{
警报('不,我们没有ul'+$(this.text());
$(this.find('span').remove();
}
})

元素没有任何子元素
  • 元素。一个是兄弟姐妹而不是孩子

    如果您想让它成为一个孩子,您需要更改html,以便关闭
    在关闭
之后。但是请注意,由于您有子
元素,您将无法将整个内容包装在锚中,因为这是无效的html,浏览器将不会创建这样的结构

您需要将行更改为检查兄弟姐妹的内容,如:

$(this).next('ul').find('li ul').length
//Or go back up to the parent element and then go searching back down
$(this).parent().find('li ul').length

ul不在元素内,因此
$(this.find('li')。has(“ul”)
无法工作

使用
$(this).next()
获取ul元素。

另一种方法

$(“#navbarNavDropdown ul”)。每个(函数(){
$.each(this.children,函数(索引,元素){
const text=element.innerText.split('\n').reverse()[0];
if(element.localName=='li'&&$(element.has('ul')。长度>0){
警报(‘是的,我们有一个ul’+文本);
}否则{
警报(是的,我们没有ul+文本);
$(元素)。查找('span')。删除();
}
});
})


您是否尝试过使用contains()是的,它显示错误的值意味着在其他部分显示所有4个值。我很困惑。如果任何li元素都没有值,可以这样做吗?请删除相应的span标记?要删除相应的span标记,请写入
$(this)。查找('span')。删除()
在else部分,父
UL
有两个子意思
li
为什么它在同一个循环中出现4次。它将检查所有
UL
li
。你还期待其他东西吗?事实上,如果下拉列表中的元素没有值,我需要删除下拉列表图标(
)。这就是我检查的原因。你们能做到吗?是的,我更新了代码片段。我希望这就是你想要的。