【问题标题】:JQuery to find LI by text and UL by ClassJQuery 按文本查找 LI,按类查找 UL
【发布时间】:2016-05-18 10:31:09
【问题描述】:

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

谢谢

【问题讨论】:

  • 你能发布html吗?
  • 您页面中的 li 元素是否实际上具有 text 属性,或者您是否正在查询 li 标记内的文本?

标签: javascript jquery css sharepoint-2013


【解决方案1】:

使用这个:

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

请注意,JQuery 总是返回一个不为空的 JQuery 对象。

【讨论】:

    【解决方案2】:

    如果您试图找出页面是否包含任何带有文本“查看项目”的 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');
    }
    

    【讨论】:

      【解决方案3】:

      关于 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');
      }
      

      【讨论】:

        猜你喜欢
        • 2011-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多