элемент двоюродного брата - PullRequest
6 голосов
/ 21 апреля 2010

Я пытаюсь найти ближайший элемент, который содержит класс .... это попытка найти "двоюродного брата" текущего элемента, который у меня есть ... следующее не сработало:

$('myelement').closest ('*:has(.class1)').find('class_cousin')

Я использую * в closest, так как я не уверен, какой элемент типа является тем, который я ищу, и не знаю, есть ли у него какие-либо классы или ID (я пытаюсь сделать его общимплагин)

Есть идеи, как я мог это сделать?спасибо

Ответы [ 2 ]

8 голосов
/ 21 апреля 2010

Я думаю, что вы близко. Примерно так должно работать:

$('myelement').closest(':has(.yourClass)').find('.yourClass')

Я думаю, ключ в том, что вы ищете ближайшего родителя, который имеет определенный класс, который вы ищете, а затем хотите найти этот конкретный объект.

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

0 голосов
/ 03 сентября 2013

Я новичок в stackoverflow, и я не уверен, смогу ли я или нет, но я отредактировал ответ @robjb в соответствии с моими потребностями и размещением здесь, на случай, если это поможет кому-то еще. Полный кредит достается только ему.

В случае, если кто-то хочет выбрать только определенных двоюродных братьев, а не всех двоюродных братьев (т.е. хочет использовать селектор), тогда мы можем использовать следующую функцию. Если селектор не передан в качестве аргумента, он выдаст всех двоюродных братьев.

(function($) {
$.fn.cousins = function(selector) {
    var cousins;
    this.each(function() {
        var auntsAndUncles = $(this).parent().siblings();
        auntsAndUncles.each(function() {
            if(cousins == null) {
                if(selector)
                    cousins = auntsAndUncles.children(selector);
                else
                    cousins = auntsAndUncles.children();
            }
            else {
                if(selector)
                    cousins.add( auntsAndUncles.children(selector) );
                else
                    cousins.add( auntsAndUncles.children() );
            }
        });
    });
    return cousins;
    }
})(jQuery)

Пример использования вышеуказанной функции:

$(clickedObj).cousins('.singleWheel');

Над ответом дают только двоюродные братья.

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