【问题标题】:JQuery Checkbox click event never returns trueJQuery 复选框单击事件永远不会返回 true
【发布时间】:2023-03-20 02:54:02
【问题描述】:

对于这么简单的事情,我似乎无法弄清楚。我在 IE 11 中使用 jQuery 1.4.2(尽管我尝试了更高版本),当值应该为 true 时,我似乎无法检索检查的值。

    <input id="<%=ID%>" class="abcdeCheckBox" type="checkbox" value="<%=ID%>" />
var cachedCheckedValues = new Array();
$('.abcdeCheckBox').bind('click', function()    
    {
        alert(this.checked);
        var indexCheck = cachedCheckedValues.indexOf(this.value);

        if(this.checked)
        {
            if(indexCheck == -1)
            {
                cachedCheckedValues.push(this.value);   
            }
        }
        else
        {
            cachedCheckedValues.splice(indexCheck, 1);
            alert("removing: " + this.value);
        }
    });

这永远不会返回 true,我不明白为什么。它永远不会将值添加到我在代码中拥有的数组中。

【问题讨论】:

  • 需要将变量初始化为数组。你不能在null 上使用.push()
  • 必须尝试刷新浏览器或清除浏览器缓存?
  • 可以确认,代码确实有效。无论您遇到什么错误都在其他地方。
  • 是的,这是一个不寻常的问题。不确定是什么原因造成的。通过按 id 重新选择元素并在 click 事件中获取选中的值,我确实找到了一种解决方法。这段代码使用的是 jQuery 1.4.2,虽然它很旧,但我认为这没有区别。我在同一个浏览器中运行了 JSFiddle,一切正常。

标签: jquery internet-explorer checkbox


【解决方案1】:

我注意到在您的代码中,您从未在向数组添加内容之前声明该数组。 jsfiddle链接:https://jsfiddle.net/larryjoelane/t3f9xbu5/

//declare array 
var cachedCheckedValues = [];


$('.abcdeCheckBox').bind('click', function()    
    {


        alert(this.checked);

        var indexCheck = cachedCheckedValues.indexOf(this.value);

        if(this.checked)
        {
            if(indexCheck == -1)
            {
                cachedCheckedValues.push(this.value);   
            }
        }
        else
        {
            cachedCheckedValues.splice(indexCheck, 1);
            alert("removing: " + this.value);
        }
    });

【讨论】:

  • cachedCheckedValues需要定义在点击范围之外,否则只会包含最新的值
  • 好吧,我只是没有显示声明,但它确实存在。谢谢。
  • 这将如何影响alert(this.checked) 显示的内容?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
相关资源
最近更新 更多