2009-11-26 4 views
3

$('form td .hint p') этот селектор jquery возвращает обратно список [p,p,p,p,p,p].циклический набор элементов в jQuery

Я хотел бы знать, как наилучшим образом пройти через каждый из них, проверить их значения css и сделать что-то, если значение css = что-то я хочу.

У меня есть эта функция, чтобы показать и скрыть всплывающую подсказку, но я хочу, чтобы только одна всплывающая подсказка показывалась за раз. Выполняя mouseover и mouseout, это багги, потому что в настоящее время я использую parent(), next() и child(), чтобы найти нужный элемент, а jquery мгновенно вставляет div-обертку вокруг элемента, который я показываю и скрываю , Поэтому в основном я пытаюсь заставить все остальные элементы p, имеющие отображение: блокировать каждый раз при наведении указателя мыши.

В настоящее время это сделать:

target = $('form td .hint p'); 
target[0].css('display') gives an error. 

target.css('display') seems to only return the css of the first one. 
+0

Вы рассматривали различные плагины jQuery, предлагающие функциональные возможности всплывающих подсказок? Например, docs.jquery.com/Plugins/Tooltip? –

ответ

14

Использование each():

var displays = ''; 
$("p").each(function(i, val) { 
    displays += "Paragraph " + i + ": " + $(this).css("display") + "\n"; 
}); 
alert(displays); 

Причина этого не удается:

var target = $("p"); 
var display = target[0].css("display"); 

что target[0] является не объект JQuery. Вы можете сделать это:

var display = $(target[0]).css("display"); 

Кроме того, если вы читаете документацию для css():

Вернуться свойство стиля на первом совпавшего элемента.

Два других вопроса, о которых стоит упомянуть.

Во-первых, я бы не советовал делать подсказку самостоятельно. Получите один из многих плагинов для этого. Раньше я использовал this one, и это сработало.

Во-вторых, если вы проверяете значения отображения CSS, может быть полезно использовать ярлык. Например, вы могли бы сделать это:

$("p").each(function() { 
    if ($(this).css("display") == "none") { 
    $(this).addClass("blah"); 
    } 
}); 

, но вы также можете использовать :hidden и :visible селекторы, так:

$("p:hidden").addClass("blah"); 

Проверка значения css() вызовов в значительной степени ненадежны, как вы только проверка инлайн стили, а не значения стилей.

+0

Эй, на самом деле я просто понял, используя: видимый селектор сделал трюк. Спасибо за ответ, хотя, потому что мне нужна каждая функция() для чего-то еще. Благодарю. – Chris

Смежные вопросы