【问题标题】:Jquery select parent element, has() complicationsJquery 选择父元素,has() 并发症
【发布时间】:2012-03-23 22:46:59
【问题描述】:

我在 Drupal 中使用 Jquery。 我有四个块的集合,它们都有一个共同的标题,试图将 Jquery 设置为在单击第一个块时隐藏第二个、第三个、第四个块。

代码如下:

javaScript:

(function($){
  $('.view-display-id-block_1').delegate('a','hover',function(){
    var linkText = $(this).text();
    var viewSelectString= '.views-field-title:contains('+linkText+')';
    var textSelect = $('p,li,a,span',$(viewSelectString));
    var recordString = 'div.views-field-title:contains('+linkText+')';
    var recordStringRefine = 'li .views-row:has('+recordString+')';
    var recordStringSelect = $(recordStringRefine);
    $recordStringSelect.hide();
  });
})(jQuery);

HTML:

<li><p class='views-field-title'>contains linkText</p><p></p><p></p></li>
<li><p class='views-field-title'>contains linkText</p><p></p><p></p></li>
<li><p class='views-field-title'>contains linkText</p><p></p><p></p></li>
<li><p class='views-field-title'>contains linkText</p><p></p><p></p></li>

使用delegate(),因为jQuery版本太旧不支持on()

所以查询的前半部分工作正常,我可以选择四个块中的任何元素。 每个块都有许多元素,我想上一层,找到包含每个块的父 &lt;li&gt;,并将其隐藏。

当我添加 recordString 内容时,我的查询停止工作。我能找到的所有 has() 示例只能按元素选择。

在上下文中还有很多其他类和元素浮动,但基本上我需要根据它们是否包含“linkText”来选择元素,然后以某种方式向上移动到包装器 li 并隐藏它(希望一切它包含)。

找不到关于 has() 是否支持伪选择器以及所有这些的太多信息,无论如何,它似乎开始变得有点复杂和令人困惑。绝对不能让代码运行。这只是错误的方式来完成这件事吗?

谢谢,感谢您的帮助

【问题讨论】:

  • 嘿,我想我需要更多积分还是什么?尝试投票回答并得到“您没有权限”之类的东西。
  • 哦,我明白了。它的复选框。我的错。
  • recordStringSelect != $recordStringSelect
  • 请贴出相关的HTML。
  • HTML 中的相关 链接在哪里?

标签: jquery drupal-7 selector


【解决方案1】:

解决办法可能就这么简单:

$(function(){
    $('.view-display-id-block_1').delegate('a', 'hover', function(){
        $(".views-field-title:contains(" + $(this).text() + ")").closest('li').hide();
    });
});

【讨论】:

  • 太棒了。 Closest 正是我想要的,has() 是我失败的修复。非常感谢。
  • 不用担心。在过去的几年里,closest() 成为我最好的朋友的次数超过了我想记得的次数。我希望它对你有好处。
猜你喜欢
  • 1970-01-01
  • 2019-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 2011-08-26
相关资源
最近更新 更多