jQuery在已选中的单选按钮上解除绑定单击事件

时间:2011-07-12 17:24:41

标签: javascript jquery events search parameters

我正在尝试创建一些参数过滤器,但我不想在选择单选按钮过滤器时调用使我的搜索AJAX调用的函数。

$('#contentType input:enabled').bind('click', function(e){
    var $this = $(this),
        $type = this.type,
        $id = this.id;
    if ($type === 'radio') {
        if ($id === 'allContent'){
            sFrm.$boxes.attr({'checked': false});
            sFrm.$specificRadio.attr({'disabled': true});   
            searchAjax();
            removeFilter();
        }
    } else if ($type === 'checkbox') {
        if (sFrm.$boxes.filter(':checked').length === 0) {
            sFrm.$allRadio.trigger('click');        
        } else {
            var filterConfig = {
                index: $('.subFilter').index($this),
                txt: jQuery.trim($this.parent().text())
            }                   
            sFrm.$allRadio.attr({'checked': false});        
            sFrm.$specificRadio.attr({'disabled': false, 'checked': true}); 
            searchAjax();
            if ($this.is(':checked')) {
                addFilter(filterConfig);
            } else {
                removeFilter(filterConfig.index);
            }               
        }           
    }   
});

因此上面的jQuery查看集合中所有已启用的输入,当用户单击 allContent 单选按钮时,将调用 searchAjax 函数。

当尚未选择/选中所述单选按钮时,这是正确的。当选择按钮时仍然调用该函数,我想停止这种行为,但无法弄清楚如何?

修改

不确定我是否正确解释。希望这个jsFiddle会有所帮助:

http://jsfiddle.net/QsbRp/3/

基本上,如果已选中所有内容类型并在选中时单击,则不应调用 searchAjax 。它目前调用该函数。

如果未选中并单击它,则它应该像现在一样(禁用同级单选按钮并取消选中所有相关的复选框)。

1 个答案:

答案 0 :(得分:1)

在处理程序的顶部添加:

if ($this.is(":checked")) {
    return;
}

如果当前选中了单选按钮,则事件处理程序将返回而不执行该函数的其余部分。