Действительно ли этот селектор допустим?

Действительно ли этот селектор допустим? и к какому $ (это) относится?

$('div', $(this).parents('div'))

я просто изучаю JavaScript и jQuery, спасибо

1
задан anton 17 June 2011 в 05:05
поделиться

2 ответа

Это действительно так. Он берет все родительские div для this , а затем находит все находящиеся под ними div. Разбивка на части:

var jq = $(this);                // Get a jQuery object for `this`
var parents = jq.parents('div'); // Find all of its parents that are divs
var divs = $('div', parents);    // Find all divs under those parent divs

Результатом является объект jQuery с совпадениями для всех div, которые являются потомками div, которые являются родителями this . Подробнее здесь и здесь .

Пример: Предположим, что this изначально ссылается на input элемент foo ниже:

<div id='d1'>
    <div id='d2'>
        <input id='foo' type='button'>
        <div id='d3'>
        ...
        </div>
    </div>
    <div id='d4'>
        <div id='d5'>
        ...
        </div>
    </div>
</div>

$ (this) .parents ('div') будет соответствовать d1 и d2 . Тогда $ ('div', Родители) будет соответствовать:

  • d3
  • d2 (потому что это не только один из родителей, но и дочерний элемент d1 ])
  • d4
  • d5
2
ответ дан 2 September 2019 в 23:48
поделиться

Фактически:

$('div', $(this).parents('div'))

Функция jQuery ( jquery () или $ () ) требует хотя бы одного параметра селектора, а второй необязательный - для контекста, в вашем примере $ (this) .parents ('div') .

Итак, приведенный выше код будет выполняться на $ (div) , который находится внутри контекста $ (this) .parents ('div') . Однако это не так уж часто, в большинстве случаев это выглядит так:

$('#element').click(function(){
    $('div', this).addClass('some class');
});

В приведенном выше случае this относится к #element , а затем добавляет класс к div внутри него.

0
ответ дан 2 September 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: