【发布时间】: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()
所以查询的前半部分工作正常,我可以选择四个块中的任何元素。
每个块都有许多元素,我想上一层,找到包含每个块的父 <li>,并将其隐藏。
当我添加 recordString 内容时,我的查询停止工作。我能找到的所有 has() 示例只能按元素选择。
在上下文中还有很多其他类和元素浮动,但基本上我需要根据它们是否包含“linkText”来选择元素,然后以某种方式向上移动到包装器 li 并隐藏它(希望一切它包含)。
找不到关于 has() 是否支持伪选择器以及所有这些的太多信息,无论如何,它似乎开始变得有点复杂和令人困惑。绝对不能让代码运行。这只是错误的方式来完成这件事吗?
谢谢,感谢您的帮助
【问题讨论】:
-
嘿,我想我需要更多积分还是什么?尝试投票回答并得到“您没有权限”之类的东西。
-
哦,我明白了。它的复选框。我的错。
-
recordStringSelect != $recordStringSelect
-
请贴出相关的HTML。
-
HTML 中的相关 链接在哪里?