jQuery, что вместо $ (this) .parent (). children () - PullRequest
18 голосов
/ 27 мая 2011

Просто быстрый пример:

<p>
    <span class="example"></span>
    <input type="text" name="e_name" id="e_id />
</p>
<script type="text/javascript">
    $('input').click(function(){
        $(this).parent().children('span').text('Suprise!');
    }
</script>

Что я могу использовать вместо parent (). Children ()?

Я думаю, что это немного не элегантный кусок кода. Любая функция, т.е.: $ (this) .fun ('span'). Text ('просто лучше'); ??

Ответы [ 5 ]

46 голосов
/ 27 мая 2011
$(this).siblings('span').text('Suprise!');
7 голосов
/ 27 мая 2011

$(this).siblings('span').text('Surprise!');

Будет эквивалентно без обхода DOM, а затем обратно (я имею в виду, он все еще делает это, но по крайней мере вы не делаете это вручную).

4 голосов
/ 27 мая 2011

Чуть элегантнее .prev()

$(this).prev('span').text('Surprise!');

Подробнее об этом можно прочитать здесь: Пред.

edit: читать разметку назад, prev лучше, а не дальше.

1 голос
/ 27 мая 2011
$("span.example",$(this).parent()).text('Suprise!');
1 голос
/ 27 мая 2011

попробуйте это:

$(this).prev('span').text('Surprise!');
...