селектор jquery для предыдущего экземпляра класса

#jquery #jquery-selectors #css-selectors

#jquery #jquery-селекторы #css-селекторы

Вопрос:

при событии нажатия кнопки я хочу прочитать значение текстового поля, основанного на определенном классе. на странице есть несколько текстовых полей с этим классом, поэтому я хочу выбрать то, которое находится перед кнопкой. ПРИМЕЧАНИЕ: это НЕ прямо перед, но я хочу, чтобы он выполнял поиск по странице, пока не найдет экземпляр.

я думал, что Prev () сделает это, но, похоже, это не работает

Комментарии:

1. а что, если использовать другой селектор внутри класса one?

2. Вы пробовали prevAll() ?

Ответ №1:

 $(this).prevAll('.class:first');
  

Использовать prevAll с :first фильтром

Комментарии:

1. похоже, это не работает. . я получаю jquery (), когда смотрю в firebug на результат этого селектора

2. @ooo вы должны получить jquery в качестве возврата. jQuery всегда предоставляет вам обернутый объект jQuery. Взгляните на эту скрипку : jsfiddle.net/H32gk

Ответ №2:

Предполагая, что у вас неизвестная вложенность и текстовые поля не являются родственными, попробуйте это:

 $(":button").click(function() {
    var allElem = $("*");
    var buttonIndex = allElem.index(this);
    var nearest;
    $(".text").each(function(i, elm) {
        var index = allElem.index(elm);
        if (buttonIndex > index) {
            nearest = elm;
        }
    });
    alert($(nearest).val());
});
  

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

Пример кода на jsfiddle