Селекторы Jquery в глубине - PullRequest
2 голосов
/ 04 января 2012

Я отображаю имя группы из базы данных в ul >li, а его параметры в <div>, которое изначально скрыто. Теперь с помощью jQuery я хочу переключать только <div>, но в то же время хочу скрыть все остальные.

Я пробовал следующий код, но он не работает в jQuery 1.7. Может ли кто-нибудь помочь мне, как использовать .not или .filter при выборе всех div, начинающихся с "group" или другого решения?

$("#popupContact").delegate("ul.horizontal_lists li a", "click", function() {
    var target_id = $(this).attr('id');
    target_id = "divOf" + target_id;
    $('#' + target_id).slideToggle("slow");
    $('[id^="divOf"]'.not(this)).hide();
}

Ответы [ 2 ]

1 голос
/ 04 января 2012

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

$('[id^="divOf"]'.not(this)).hide();

Я думаю, вы ищете что-то вроде этого:

var target_id = $(this).attr('id');
target_id = "divOf" + target_id;
$('#' + target_id).slideToggle("slow");
$('div[id^="divOf"]:not("#' + target_id + '")').hide();

Последняя строкавыбирает все div, которые имеют идентификатор, начинающийся с divOf, но не идентифицируемый с идентификатором target_id, и скрывают их

0 голосов
/ 04 января 2012

Вы также должны начать использовать on, поскольку delegate было deprecated в jquery 1.7.

$("#popupContact").on("click", "ul.horizontal_lists li a", function() {
    var target_id = $(this).attr('id');
    target_elem = $("#divOf" + target_id);
    $('[id^="divOf"]').not(target_elem).hide();
    target_elem.slideToggle("slow");
}
...