我在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()是否支持伪选择器以及所有这些的信息,无论如何它似乎开始变得复杂和令人困惑。绝对不能让代码运行。这只是错误的方式来完成这项工作吗?
谢谢,我感谢您的帮助
答案 0 :(得分:0)
解决方案可能就像这样简单:
$(function(){
$('.view-display-id-block_1').delegate('a', 'hover', function(){
$(".views-field-title:contains(" + $(this).text() + ")").closest('li').hide();
});
});