2013-05-12 3 views
0

В настоящее время я работаю над новым сайтом (музыкальным журналом), и мне нужно использовать очень удобную функцию; У меня есть общее представление о том, как это сделать, но не могу заставить код работать.функция цикла jquery; скрыть div, если

В разделе обзора я хочу отобразить один основной обзор CD и другие компакт-диски, только что упомянутые в заголовках на боковой панели div. Теперь я не хочу, чтобы основной дисплейный компакт-диск отображался на боковой панели одновременно. Я пытаюсь написать функцию jquery, которая скроет заголовок с боковой панели, как только она будет соответствовать заголовку основного диска дисплея.

Я думаю, идея заключается в создании функции if здесь: if (main CD title) == (sidebar CD title) скрыть (боковая панель, содержащая название компакт-диска); он должен автоматически перебирать все элементы.

Ниже приведен пример кода, который влияет:

HTML:

<div class="grid_12 alpha omega upper2" title="vil"> 
<div class="grid_8 upper alpha omega" id="vil"> 

grid_12 является основным компакт-диск и grid_8 это название боковой панели CD-

JQuery бит:

if($('.grid_12').attr('title') == $('.grid_8').attr('title')) 
{ 
$('.grid_8').attr('title').hide(); 
} 

Код jquery определенно не прав, но это всего лишь идея, как я хочу это делать.

Предложение с размещением всех уникальных идентификаторов в массиве неплохо.

Спасибо за вашу помощь заранее.

Яцек

+1

Звучит неплохо. Тогда в чем вопрос? – lifetimes

+0

И каков ваш (актуальный) HTML? –

+0

Получите все cd-заголовки на боковой панели и добавьте в массив. Затем проверьте массив, чтобы узнать, соответствует ли основной заголовок cd или проверяется каждый из них и оставьте массив. Вам действительно нужно опубликовать код для нас, чтобы помочь; html и попытка js. – Syon

ответ

0

Вы не можете скрыть название, это бессмысленно. Вы можете скрыть элемент или очистить его заголовок.

Меняем либо один из тех, и он будет «работать»:

$('.grid_8').hide(); 

Или:

$('.grid_8').attr('title', ''); 

Чтение, что вы снова сказал, я думаю, я понимаю вашу цель. Такой код будет скрывать элемент с классом «grid_8», имеющий титул такой же, как элемент с классом «grid_12»:

var titleToSearch = $('.grid_12').attr('title'); 
var matchingDiv = $('.grid_8[title="' + titleToSearch + '"]'); 
matchingDiv.hide(); 

Live test case.

Предполагается, что у вас есть только один «grid_12» и несколько элементов «grid_8». Если у Вас есть больше чем один, и каждый «grid_12» содержит несколько «grid_8», и вы хотите, чтобы найти один из них с названием согласования, здесь обновленный код:

var parentGrid12 = $(this).parents(".grid_12"); 
var titleToSearch = parentGrid12.attr("title"); 
var matchingDiv = parentGrid12.find(".grid_8[title='" + titleToSearch + "']"); 
matchingDiv.hide(); 

$(this) предполагает код выполняется как событие обработчик некоторого элемента внутри «grid_12». Updated fiddle.

+0

Я полагаю, что '.removeAttr ('title')' будет более уместным. Наверное, это не имеет никакого значения. – JJJ

+0

@ Juhana см. [Здесь] (http://stackoverflow.com/q/4217437/447356). Не уверенный в себе, оставив это на время. –

+0

$ ('. Grid_8'). Attr ('title', ''); вероятно, будет иметь больше смысла; Я не могу использовать $ ('. grid_8'). hide(); так как это скроет все div с этим классом, и на странице будет довольно много; идея состоит в том, чтобы скрыть только один .grid_8 div, содержащий данный атрибут. – Jack