Я работаю с Jquery в Drupal.
У меня есть наборы из четырех блоков, которые имеют общий заголовок, пытаясь настроить 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 слишком старая для поддержки ()
Итак, первая половина запроса работает нормально, я могу выбрать любой элемент в четырех блоках.
В каждом блоке есть несколько элементов, я хочу подняться на уровень, найти родителя <li>
, который содержит каждый блок, и скрыть это.
Когда я добавляю запись recordString, мой запрос перестает работать. Все примеры has () я могу найти только по элементам.
В контексте существует множество других классов и элементов, но в основном мне нужно выбирать элементы на основе того, включают ли они 'linkText', затем каким-то образом перемещаться по дереву к оболочке li и скрывать это (и, надеюсь, все что он содержит).
Не могу найти много информации о том, поддерживает ли has () псевдо-селекторы и все такое, в любом случае кажется, что это начинает становиться несколько сложным и запутанным. Определенно не могу заставить код работать. Это просто неправильный способ сделать это?
Спасибо, я ценю помощь