JQuery 按文本查找 LI,按类查找 UL

JQuery to find LI by text and UL by Class

本文关键字:查找 UL LI JQuery 文本      更新时间:2023-09-26

我正在使用SharePoint 2013中的一个列表,该列表在鼠标悬停时动态创建无序列表(熟悉SharePoint的用户为列表项ECB)。

给定的类名在 at 后添加了空格,每个菜单项额外添加 1 个空格。我不确定这是否会影响 jquery 中的类属性值,所以这就是我使用开头符号的原因。

我需要隐藏几个菜单项,并且在调试中没有收到警报,所以我认为我的语法已关闭。

我正在使用这个:

if($('ul[class^="ms-core-menu-list"] li[text="View Item"]') ! == null) {
  alert('F');
} else {
  alert('no F');
}

我没有收到警报,所以要么我的语法错误,我需要帮助,要么执行此代码时未创建菜单项,在这种情况下,我想知道如何使用 jquery 获取这些菜单项,因为我无法在我的环境中部署代码。在过去的几天里,我看了很多博客,但没有推荐的东西能接近我。

谢谢

如果您试图找出页面是否包含任何带有文本"查看项目"的li标签,这些标签是带有类"ms-core-menu-list"的ul标签的子级,您可以使用以下选择器:

$('li:contains("View Item")', $('ul.ms-core-menu-list')).length;

在您的示例上下文中:

if($('li:contains("View Item")', $('ul.ms-core-menu-list')).length) {
  alert('F');
} else {
  alert('no F');
}

使用这个:

if($('ul.ms-core-menu-list li[text="View Item"]').length==0)
...

请注意,JQuery 始终返回一个不为 null 的 JQuery 对象。

关于jQuery选择器,要记住的是它们将始终返回一个对象。即使你没有找到任何东西,你仍然会得到jQuery API来调用.hide().show()等东西。如果在调用 jQuery 方法时未选择任何内容,则不会收到错误,只是不会为调用选择任何内容来操作。

为了推断是否选择了任何元素,您可以做的是将其视为伪数组 - 您可以使用.length

在您的情况下,

if ($('ul.ms-core-menu-list li[text="View Item"]').length > 0) {
  alert('F');
} else {
  alert('no F');
}