我正在尝试创建一些参数过滤器,但我不想在选择单选按钮过滤器时调用使我的搜索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会有所帮助:
基本上,如果已选中所有内容类型并在选中时单击,则不应调用 searchAjax 。它目前调用该函数。
如果未选中并单击它,则它应该像现在一样(禁用同级单选按钮并取消选中所有相关的复选框)。
答案 0 :(得分:1)
在处理程序的顶部添加:
if ($this.is(":checked")) {
return;
}
如果当前选中了单选按钮,则事件处理程序将返回而不执行该函数的其余部分。