jQuery / Javascript:单击复选框上的事件和“已检查”属性

前端之家收集整理的这篇文章主要介绍了jQuery / Javascript:单击复选框上的事件和“已检查”属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
代码
$('input.media-checkBox').live('click',function(e){

    e.preventDefault();
    var that = $(this);

    if (that.attr('checked') == 'checked'){

        var m = that.attr('media');
        var mid = 'verify_' + m;
        that.parents('div.state-container').find('ul.' + mid).remove();
        that.attr('checked',false);
    } else {

        var url = AJAX_URL;

        $.ajax({
           type: 'GET',url: url,dataType: 'html',success: function(data){

                that.parents('li').siblings('li.verification').children('div.media-verification').append(data).fadeIn(500);
                that.attr('checked','checked');
           }
        }); 
    }

    return false;
});

我以一种形式进行表演,然后在相关的复选框上将点击事件触发到另一个部分的ajax,如果需要的话.窗体插入很好,点击事件被触发,检查需要检查的框并触发第二个ajax,因为复选框的checked属性最初为false.

什么是凝乳我的奶酪是如果我UNCHECK这些盒子之一.尽管e.preventDefault(),在检验之前,checked属性设置为false,因此if语句总是执行else语句.我也尝试过$.is(‘:checked’),所以我完全感到困惑.

看起来,未选中 – >检查状态读取原始状态,但检查 – >未经检查不会.任何帮助?

解决方法

B.E.我知道这是一年,但我想我找到了解决方案,

这里的问题是,点击事件实际上被调用并在“checked”属性添加到复选框输入之前运行.所以函数运行,看看输入是否具有“checked”属性,并运行else条件.那么元素被赋予了“checked”属性.

我刚刚遇到这个,我的解决方案是将功能绑定到更改功能而不是点击功能,因为更改只有在输入上更新了checked属性后才会触发.

希望这可以帮助您,如果没有,任何其他人在遇到类似问题时偶然绊倒这篇文章.

猜你在找的jQuery相关文章