jQuery, что вместо $(this).parent().children()

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

<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('просто лучше'); ??


person Mr Sooul    schedule 27.05.2011    source источник
comment
Спасибо за очень читаемый вопрос, поэтому мне не пришлось нажимать на 3 разных ответа, не зная, что внутри.   -  person Jason    schedule 14.08.2017


Ответы (4)


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

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

person rockerest    schedule 27.05.2011

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

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

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

изменить: прочитайте разметку в обратном порядке, предыдущая лучше, а не следующая.

person Jeremy B.    schedule 27.05.2011

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

$(this).prev('span').text('Surprise!');
person drudge    schedule 27.05.2011

person    schedule
comment
Мне определенно нравится .siblings, я даже не думал об этой функции, отличный ответ. - person Jeremy B.; 27.05.2011
comment
$(this).siblings() будет игнорировать себя, поэтому, если вы хотите настроить таргетинг на детей, включая себя, parent().children() по-прежнему подойдет. - person WaldenW; 13.04.2017