JQuery выбрать следующее вхождение некоторого элемента

0

Я выбираю некоторый элемент с .someClass и я хочу выбрать следующий элемент <label> который встречается ниже в дереве DOM.

Между этими двумя элементами может быть что угодно, например:

<input class="someClass" />
<p>asdfasdf</p>
<div></div>
<table>
    <tr>
        <td>
            <label>SOMETHING</label>
        </td>
    </tr>
</table>

Мой скрипт:

 $(".question").each(function (index, value) { 
     vargroupNumber = ++index;
     $(":radio", this)
     .attr("name", "group" + groupNumber)
     .each(function (index, value) {        
         $(this)
         .removeAttr('checked')
         .attr("id", "id" + groupNumber + index)
         .next('label') 
         .‌​attr("for", "id" + groupNumber + index); 
     }); 
 });

Я хочу выбрать и установить что-то для этого <label>.

  • 0
    Вы пробовали что-нибудь?
  • 0
    Я сделал много вещей: D Это работает для предопределенного макета, но кроме этого, это сложно ... На самом деле мой случай немного сложнее, это то, как он работает, только если <label> прямо рядом с: радио-кнопка -> $ ( ".question"). each (function (index, value) {var groupNumber = ++ index; $ (": radio", this) .attr ("name", "group" + groupNumber) .each (function (index , значение) {$ (this) .removeAttr ('флажок'). attr ("id", "id" + groupNumber + index) .next ('label'). attr ("for", "id" + groupNumber + индекс); }); });
Показать ещё 7 комментариев
Теги:
jquery-selectors

4 ответа

1
Лучший ответ

Это уже было решено (и даже "подключено").

  • 0
    Я действительно не понимаю, как получилось, что они еще не сделали эту часть для jquery. Это немного абстрактно, но может быть очень полезно.
1

вы можете сделать это с помощью Recursion, вот код

var elem = $('.someClass');

findlabel(elem)

function findlabel(elem) {

if (elem.prop('tagName') == 'LABEL') {
    elem.text('yahoo');
    //do what you want to do
} else if (!elem.is(':empty')) {

    var notfound = 1;
    elem.find('*').each(function () {

        if ($(this).prop('tagName') == 'LABEL') {
            $(this).text('yahoo');
            //do what you want to do
            notfound = 0;
            return false;
        }

    });

    if (notfound == 1) {
        elem = elem.next();
        findlabel(elem);
    }

} else {
    elem = elem.next();
    findlabel(elem);
}
}

и вот рабочий пример: - http://jsfiddle.net/LLkdA/

я надеюсь, что это то, что вы хотите

-1

Определенно вам захочется использовать Jquery следующую функцию. Я задал в основном тот же вопрос и получил свой ответ

Получение идентификатора Div в заголовке, Аккордеон

  • 0
    это не тот же вопрос, пожалуйста, прочитайте внимательно. Этот ответ не сработает для @mariotanenbaum.
-2

Пытаться

$(".someClass").parent("body").find("label");

Вместо body используйте любой родительский someClass и table.

скрипка

  • 1
    Это работает, только если <label> находится рядом с элементом .someClass.
  • 0
    @mariotanenbaum - спасибо, что указал на это

Ещё вопросы

Сообщество Overcoder
Наверх
Меню