【问题标题】:Javascript array not working as expectedJavascript 数组未按预期工作
【发布时间】:2012-07-13 13:49:59
【问题描述】:

我对 js/jquery 还是很陌生。对于 ID 为 check$(其中 $ 是序号)的每个复选框,我想切换使用相同 check$(但作为一个类)的周围跨度的类“同意”。我不想硬编码匹配的复选框列表,因为这可能会有所不同。

这是我的代码。此功能按预期工作:

agree = function (checkbox, span) {
    $(checkbox).change(function(){
       $(span).toggleClass('agree');
   });      
};

这是我试图传递给上述函数的内容,但它不起作用:

$(function() {
    var elemid = 'check',
    checks     = Array($('[id^='+elemid+']').length);
    console.log(checks);
  for (i=0; i < checks; i++) {
    agree('#'+elemid+checks[i], "."+elemid+checks[i]);
    }
});

console.log(checks) 返回 [undefined × 4]。元素的数量是正确的,但我不知道为什么它是未定义的,或者这是否重要。

以下代码按预期工作,但正如我所说,我宁愿不必指定每个匹配的元素:

$(function() {
    var checks = ["check1", "check2", "check3", "check4"];
    for (i=0; i < checks.length; i++) {
        agree('#'+checks[i], "."+checks[i]);
        }
});

谢谢。

编辑:感谢Jack,我忽略了最简单的方法。我为所有复选框和跨度添加了相同的类,并解决了这个问题:

$('input.check').change(function(){
    $(this).closest('span.check').toggleClass('agree');
});

【问题讨论】:

  • 问题不太清楚。您的问题不在于“javascript 数组”,而在于使用选择器将操作应用于相关元素。你能编辑你的问题和标题来澄清吗?

标签: javascript jquery arrays variables


【解决方案1】:

我可能完全遗漏了一些东西,但我很确定您只是想为每个复选框附加一个更改处理程序。在这种情况下,您可以为他们提供所有相同的课程。我也在猜测跨度的 html 结构。

供参考:

http://api.jquery.com/closest/

http://docs.jquery.com/Tutorials:How_jQuery_Works

$('.yourcheckboxclass').change(function(){ //grab all elements with this class and attach this change handler
   $(this).closest('span').toggleClass('agree'); 
});

【讨论】:

  • Bart Riemens 建议:想到了相同的解决方案,但我没有找到父跨度,而是添加了复选框的 id,以确保跨度也与类 $(this) 具有相同的名称。最接近("span." + this.getAttribute("id")).toggleClass('agree');
【解决方案2】:

数组充满未定义值的原因是,您只是获取 jQuery 对象中的项目数,并创建一个具有该大小的数组。 jQuery 对象被丢弃。

将 jQuery 对象放在变量中:

var elemid = 'check', checks = $('[id^='+elemid+']');

checks.each(function(){
  agree(this, "."+elemid+checks[i]);
});

【讨论】:

    猜你喜欢
    • 2015-04-11
    • 1970-01-01
    • 2023-02-08
    • 2020-04-10
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多