JQuery通过文本和UL按类查找LI

时间:2016-02-08 17:00:46

标签: javascript jquery css sharepoint-2013

我正在使用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,因为我无法在我的环境中部署代码。 过去几天我看了很多博客,但没有任何建议接近为我工作。

谢谢

3 个答案:

答案 0 :(得分:1)

如果您正在尝试查看该网页是否包含任何li个标签,其中包含ul标签的子项“查看项目”,其中包含“ms-core-menu-”类列表“您可以使用此选择器:

$('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');
}

答案 1 :(得分:0)

使用此:

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

请注意,JQuery始终返回一个非空的JQuery对象。

答案 2 :(得分:0)

关于jQuery选择器要记住的事情是它们总是返回一个对象。即使您没有找到任何内容,您仍然可以使用jQuery API来调用.hide().show()等内容。如果您没有&#39,您将不会收到错误消息;当调用jQuery方法时,你选择了任何东西,你只是没有选择任何可以接受调用的东西。

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

在你的情况下,

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