期待jQuery Selector

时间:2010-12-17 03:08:49

标签: jquery jquery-selectors css-selectors

我的jQuery代码有问题,我的Firebug给了我警告:Selector expect。

以下是代码:

$("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中得到Selector预期的警告。

jQuery本身就像我预期的那样工作。我只是想尝试修复警告。

任何人都可以提供帮助?我真的很感激。

感谢你的想法。

3 个答案:

答案 0 :(得分:4)

替换

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

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

(除了@rahul说的话):

答案 1 :(得分:2)

除了其他答案之外,还可以进一步简化,例如:

$("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.idthis.checked
  • checkboxID的选择器有额外引号,删除它们

可能没有调试,它甚至更简单,因为.attr()也适用于多个元素:

$("img[id$='_tick']").click(function() {
  $("input[id^='" + this.id.slice(0,1) + "_checkbox_']").attr('checked', true);
});

答案 2 :(得分:1)

替换

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

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

请参阅:checked

您可以使用比this.id

更快的$(this).attr("id")
var tickIDFinder = this.id;