jquery скрытый родитель - PullRequest
       15

jquery скрытый родитель

2 голосов
/ 11 июля 2009

ммм, вероятно, простой ... приведенный ниже код работает только с видимыми (show ()) элементами. Как мне получить вместо него выбрать первый скрытый элемент?

Jquery

$(".postSelectedRules").each(function() {
    $(this).parents("#idruleB-"+$(this).attr("id").substr(8)+":hidden:first").css('background', '#bbbbbb');
});

Html

<a id="idruleA-1" class="postSelectedRules" href="#">1</a>
<div class="postStuff">
    <div class="postRules">
        <span id="idruleB-1" class="postRulesSelect">1</span>
        <span id="idruleB-2" class="postRulesSelect">2</span>
    </div>
</div>

Ответы [ 3 ]

4 голосов
/ 11 июля 2009

Ваш код не имеет большого смысла. Вы ищете родителей соответствующих узлов для узла, который имеет тот же идентификатор, что и текущий узел? Идентификаторы должны быть уникальными.

Что касается исключения скрытых предметов, общая форма будет выглядеть примерно так:

$(this).parents(":someClass:visible:first").addClass("blah");

Также вместо:

css('background', '#bbbbbb');

Я бы настоятельно рекомендовал бы использовать классы вместо этого, если это возможно. Добавление и удаление атрибутов CSS проблематично. Занятия просты.

0 голосов
/ 12 июля 2009

Только к вашему сведению ... Вы НИКОГДА не должны повторять удостоверения личности. Вы обнаружите, что ваш код будет работать намного быстрее, если вы в этом убедитесь. Было бы гораздо разумнее использовать класс в этой ситуации.

Давайте предположим, что ваш XHTML выглядит так:

<div class="someClass" style="display:block;" id="someElement_1">
    <div class="postSelectedRules"></div>
</div>
<div class="someClass" style="display:none;" id="someElement_2">
    <div class="postSelectedRules"></div>
</div>
<div class="someClass" style="display:none;" id="someElement_3">
    <div class="postSelectedRules"></div>
</div>

Вы должны сделать это, чтобы выбрать '# someElement_3 "(первый скрытый элемент):

$('.someClass:hidden:first').css({backgroundColor:'#bbb'});

Я считаю, что это в основном то, что вы пытаетесь сделать.

0 голосов
/ 11 июля 2009

Вы можете сделать это с

$(".postSelectedRules:hidden").each(function() {
    $(this).parents("#"+$(this).attr("id")).css('background', '#bbbbbb');
});

: скрытый в селекторе ищет предметы, которые скрыты.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...