addClass и fadeIn не работают должным образом - PullRequest
0 голосов
/ 12 октября 2011

В моем index.php у меня есть TABLE с четырьмя строками.Один из них содержит INPUT class = "sipPacket", следующий текст, следующий INPUT class = "sipPacket", следующий текст.Каждые две строки в TBODY.

<table>
<tbody>
<tr><td><input class="sipPacket" type="radio" /></td></tr>
<tr><td>Some text 1...</td></tr>
</tbody>
<tbody>
<tr><td><input class="sipPacket" type="radio" /></td></tr>
<tr><td>Some text 2...</td></tr>
</tbody>
</table>

Я просто хочу, чтобы, когда я проверяю одну радиокнопку, часть позади второй 'tr' с текстом "Some text 2" в следующем "tbody" была скрыта инаоборот.Я сделал что-то вроде этого:

$('.sipPacket')
.live('click',function() {
    if($(this).is(':checked')) {
       $(this).parent().parent().parent().addClass('on').fadeIn().siblings().removeClass('on').children('tr:odd').fadeOut();
    }
});

Он скрывает второй элемент, но не показывает его снова, когда я нажимаю радио на этом скрытом элементе.

1 Ответ

1 голос
/ 12 октября 2011

Я верю, что это сделает то, что вы пытаетесь сделать (но я не уверен на 100%, чего вы пытаетесь достичь, и вполне может быть более легкий путь!):

$(".sipPacket").click(function() {
    $(this).closest("tbody").children("tr:eq(1)").fadeIn().end()
        .siblings().children("tr:eq(1)").fadeOut();
});

Вот рабочий пример . Он получает предка tbody, используя closest (что, как отмечено в комментариях к вопросу, гораздо проще, чем parent().parent() и т. Д.), А затем исчезает во втором tr дочернем элементе этого tbody. Затем он использует end, чтобы вернуться к исходному сопоставленному набору элементов (который является tbody), получает братьев и сестер этого элемента (есть только один) и, наконец, исчезает второй tr дочерний элемент этот брат и сестра.

...