Ожидается селектор jQuery - PullRequest
       25

Ожидается селектор jQuery

1 голос
/ 17 декабря 2010

У меня проблема с кодом jQuery, когда мой Firebug выдает предупреждение: ожидается селектор.

Вот код:

$("img[id$='_tick']").each(function() {

    $(this).click(function() {

        var tickIDFinder = $(this).attr("id");
        var tickSection = tickIDFinder.slice(0,1);

        var checkboxID = "\"input[id^='" + tickSection + "_checkbox_']\"";
        var airTableID = "#" + tickSection + "_airline_table tr";

        $(checkboxID).each(function() {

            if ( $(this).is('checked') ) {
                alert("Checkbox is Checked.");
            }

            $(this).attr('checked','checked');

        });

    });

});

Я пытаюсь написать jQuery, чтобы пользователи могли щелкнуть ссылку (как изображение). Когда пользователи нажимают на это изображение, оно «проверяет» все установленные флажки. После этого я получил ожидаемое предупреждение от селектора от моего Firebug.

Сам jQuery работает, как я и ожидал. Я просто хочу попытаться исправить предупреждение.

Кто-нибудь может помочь? Я был бы очень признателен.

Благодарю вас за мысли.

Ответы [ 3 ]

4 голосов
/ 17 декабря 2010

Заменить

var checkboxID = "\"input[id^='" + tickSection + "_checkbox_']\"";

на

var checkboxID = "input[id^='" + tickSection + "_checkbox_']";

(в дополнение к тому, что @rahul сказал:)

2 голосов
/ 17 декабря 2010

В дополнение к другим ответам, это может быть упрощено еще больше, как это:

$("img[id$='_tick']").click(function() {
  var tickSection = this.id.slice(0,1);

  var checkboxID = "input[id^='" + tickSection + "_checkbox_']";
  var airTableID = "#" + tickSection + "_airline_table tr";

  $(checkboxID).each(function() {
      if (this.checked) {
          alert("Checkbox is Checked.");
      }
      $(this).attr('checked', true);
  });
});

Несколько вещей здесь:

  • вам не нужно .each(), просто .click(), и он будет привязан ко всем из них.
  • использовать свойства DOM, когда они доступны, например, this.id и this.checked
  • селектор для checkboxID имел дополнительные кавычки, удалите их

Скорее всего, без отладки, это еще проще, поскольку .attr() также работает с несколькими элементами:

$("img[id$='_tick']").click(function() {
  $("input[id^='" + this.id.slice(0,1) + "_checkbox_']").attr('checked', true);
});
1 голос
/ 17 декабря 2010

Заменить

if ( $(this).is('checked'))

на

if ( $(this).is(':checked'))

См. :checked

Можно использовать this.id который будет быстрее чем $(this).attr("id")

var tickIDFinder = this.id;
...