Индекс jQuery для каждой функции - PullRequest
3 голосов
/ 18 августа 2011

Мне любопытно, зачем мне этот индекс

$(document).ready(function() {
        $(".divToggle").each(function(index){
            var buttonId = $(this)[0].attributes["id"].value.toString();
            var idParts = buttonId.split('_');
            var uniquePart = idParts[0] + "_" + idParts[1] + "_" + "divContentPanel";             
            $(this).click(function() {
                 $("#" + uniquePart).toggle("slow");
            });            
        });
    });

Зачем мне нужно "[0]" в "var buttonId = $ (this) [0]…" Без него я получаю атрибуты ["id"] - это нулевая ошибка ..

Ответы [ 6 ]

4 голосов
/ 18 августа 2011

Используйте это вместо

var buttonId = this.id;

или jQuery way

var buttonId = $(this).attr("id");
2 голосов
/ 18 августа 2011
$(this)[0]

Делает 2 вещи -

  1. Получение первого элемента в сопоставляемом наборе, поскольку вы циклически обходите набор результатов один за другим, индекс, вероятно, избыточен в этомcase
  2. Возвращение «обычного» JavaScript-объекта DOM, а не обернутого объекта jQuery

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

var buttonId = this.id;
2 голосов
/ 18 августа 2011

с $ (this) вы все еще находитесь в модели jquery, где правильный способ получить идентификатор - .attr ("id")

запись $ (this) [0] возвращает вас в модель DOM, где она, как вы написали.

1 голос
/ 18 августа 2011
$(".divToggle").each(function(index, element){
    var buttonId = element.id,
        idParts = buttonId.split('_'),
        uniquePart = idParts[0] + "_" + idParts[1] + "_" + "divContentPanel";

    $(element).click(function() {
         $("#" + uniquePart).toggle("slow");
    });            
});
1 голос
/ 18 августа 2011

Технически вам это не нужно с небольшой модификацией вашего кода. Что происходит с селекторами jQuery - это просто набор ссылок на элементы в массиве. так вместо

<div id ="myelement"></div>

вы получите

[<div id ="myelement"></div>]

с использованием $(this) помещает this в массив и позволяет использовать его с функциями jQuery. Если вы не используете функции jQuery, просто используйте this. Таким образом, ваш код станет

var buttonId = this.attributes["id"].value.toString();
1 голос
/ 18 августа 2011

попробуй

 var buttonId = $(this).attr("id");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...