Доступ к объектам внутри объекта HTML с помощью JS - PullRequest
1 голос
/ 22 октября 2011

Я создаю массив тегов div внутри таблицы игроков.Я получаю все теги div с классом .players.У div с именем класса .players есть входные поля и поле ссылки внутри.Я хочу иметь возможность манипулировать ими (удалить, добавить класс и т. Д.)Какие-нибудь мысли?Я уверен, что это что-то простое, но я впервые в JS:)

var divarray = $('#player-table > .players');
        for( var j = 0; j < 10; j++){
        $(divarray[j]).removeClass("players");
        $(divarray[j]).addClass("selected_players");
        $('#debug').append(divarray[j]);
        $(divarray[j]+' a').hide();
    }

Ответы [ 2 ]

3 голосов
/ 22 октября 2011

Прежде всего, вы не можете просто объединить объекты jQuery или узлы DOM со строками для создания новых селекторов. jQuery предоставляет методы для ситуаций такого рода, когда у вас уже есть объект или узел DOM и вы хотите найти другие связанные узлы.

Во-вторых, в jQuery есть гораздо лучшие способы обработки набора элементов. Вот ваш код в более jQuery-стиле. Это всего лишь пример, потому что я не знаю структуру HTML. Вы должны настроить его так, чтобы он выбирал и применялся к правильным элементам.

$('#player-table > .players').slice(0,10) // gets the first 10 elements
 .removeClass("players")                  // removes the class from all of them
 .addClass("selected_players")            // adds the class
 .find('a').hide().end()                  // finds all descendant links and hides them
 .appendTo('#debug');                     // appends all elements to `#debug`

Как вы видите, в последней строке только одна точка с запятой. Это означает, что весь этот блок кода является всего лишь одним оператором, но разбиение его на несколько строк повышает удобочитаемость.

Это работает благодаря плавному интерфейсу , концепции, которую jQuery широко использует. Это позволяет вам избегать создания объектов jQuery снова и снова, как вы делаете ($(divarray[j])).

Еще одним преимуществом является то, что вы можете работать со всем набором элементов одновременно, и вам не нужно явно перебирать каждый элемент, как вы это делаете с "обычными" методами манипулирования DOM.

Для изучения JavaScript я рекомендую MDN JavaScript Guide .
У jQuery есть пара учебных пособий и очень хорошая документация по API .

Внимательно прочитайте их, чтобы понять основы. Вы не можете ожидать, что сможете использовать инструмент, не прочитав сначала его инструкции.

1 голос
/ 22 октября 2011

Попробуйте это istructions

$(divarray[j]).find('.link').hide();
$(divarray[j]).find('a').remove('.link');

Попробуйте также

$(divarray[j]).find('.link:first').hide();  

Если вам нужно работать только с первым элементом

Надеюсь, это поможет

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