所有这些代码都在 $(文件).ready(function(){。
内
“全选”的JSP及其下的复选框:
<div class="select-all-columns select-all-link"><a href="#">Select All</a></div>
<s:iterator value="#customReports.dataAttributes" var="col" status="status">
<div class="col-option">
<label>
<s:if test="%{#col.required == true}">
<input id="report-attribute-${col.id}" disabled="disabled" checked="checked" class="column-check <s:property value="reportType"/>-column-check" type="checkbox" value="${col.name},${col.label},${col.dataType}"/>
</s:if>
<s:else>
<input id="report-attribute-${col.id}" class="column-check <s:property value="reportType"/>-column-check" type="checkbox" value="${col.name},${col.label},${col.dataType}"/>
</s:else>
<div class="column-label">${col.label}</div>
</label>
</div>
</s:iterator>
我有 6个div(每个都有一个类“.related-settings-tab”。每个div 是包含“a”元素 (请阅读下面有关此“a”元素的其他详细信息)和多个复选框。 .done()功能的作用是显示/向下滑动显示选择此div中的所有按钮和复选框。下面是如何调用selectAllFields()函数的代码:
$(".related-settings-tab").click(function(){
....
$.ajax({
....
}).done(function(){
selectAllFields();
});
});
我有一个 6 元素“a”,它的功能是“全选”和“取消全选”< / strong>其下的复选框。以下是选择所有复选框的代码:
function selectAllFields(){
$(".request-columns").click(function(){
$(this).toggleClass("checked-all");
var checkBox = $(this).siblings().find(".column-check");
if($(this).hasClass("checked-all")){
$(this).find("a").html("Deselect All");
$(checkBox).each(function(){
$(this).prop('checked', true);
});
} else {
$(this).find("a").html("Select All");
$(checkBox).each(function(){
var disabled = $(this).attr("disabled");
if(disabled != "disabled"){
$(this).prop('checked', false);
}
});
}
});
}
如果我点击第一个“全选”按钮, $(“。request-columns”)。点击(function(){.. 会被触发。这意味着第一个“全选”按钮现在有一个“全部检查”类(由toggleClass代码创建)。
然后我点击第二个“全选”按钮。同样,现在有一个“全部检查”类。 第一个和第二个“全选”按钮(现在更改为“取消全选”文字)的课程为“全部检查”。
我再说一遍,我有 6个按钮使用相同的类“.request-columns”。 但在这个例子中,我只使用前2个按钮。
当我尝试“取消全部选择”时,它可以取消选择。 输入上面写的其他代码。
当我尝试“取消全部取消”第一个时,输入其他代码。 但是,之后再次输入if代码。
因此我无法取消选择之前切换的按钮。 由于这个原因,它仍然是“全部检查”类。
答案 0 :(得分:1)
从ajax调用的done函数中删除函数并委托你的click事件,在else语句中你需要检查元素是否被选中,如果它被禁用
$('body').on('click',".request-columns",function(){
$(this).toggleClass("checked-all");
var checkBox = $(this).siblings().find(".column-check");
if($(this).hasClass("checked-all")){
$(this).find("a").html("Deselect All");
$(checkBox).each(function(){
$(this).prop('checked', true);
});
} else {
$(this).find("a").html("Select All");
$(checkBox).each(function(){
if($(this).is(':checked')){
$(this).prop('checked', false);
}
});
}
});
答案 1 :(得分:0)
你的最终html看起来不太清楚(你应该用你的问题发布生成的html)。也就是说,这应该对你有用,并消除了重复的代码:
Traceback (most recent call last):
File "/var/lib/ambari-agent/cache/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_server.py", line 179, in <module>
ZookeeperServer().execute()
File "/usr/lib/python2.6/site-packages/resource_management/libraries/script/script.py", line 219, in execute
method(env)
File "/var/lib/ambari-agent/cache/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_server.py", line 70, in install
self.configure(env)
File "/var/lib/ambari-agent/cache/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_server.py", line 49, in configure
zookeeper(type='server', upgrade_type=upgrade_type)
File "/usr/lib/python2.6/site-packages/ambari_commons/os_family_impl.py", line 89, in thunk
return fn(*args, **kwargs)
File "/var/lib/ambari-agent/cache/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py", line 40, in zookeeper
conf_select.select(params.stack_name, "zookeeper", params.current_version)
File "/usr/lib/python2.6/site-packages/resource_management/libraries/functions/conf_select.py", line 266, in select
shell.checked_call(get_cmd("set-conf-dir", package, version), logoutput=False, quiet=False, sudo=True)
File "/usr/lib/python2.6/site-packages/resource_management/core/shell.py", line 70, in inner
result = function(command, **kwargs)
File "/usr/lib/python2.6/site-packages/resource_management/core/shell.py", line 92, in checked_call
tries=tries, try_sleep=try_sleep)
File "/usr/lib/python2.6/site-packages/resource_management/core/shell.py", line 140, in _call_wrapper
result = _call(command, **kwargs_copy)
File "/usr/lib/python2.6/site-packages/resource_management/core/shell.py", line 291, in _call
raise Fail(err_msg)
resource_management.core.exceptions.Fail: Execution of 'conf-select set-conf-dir --package zookeeper --stack-version 2.4.3.0-227 --conf-version 0' returned 1. zookeeper not installed or incorrect package name