У меня есть флажок «.invalidDropChk», и когда я нажимаю на него, я хочу, чтобы его дочерние флажки были нажаты. Эта часть работает нормально. У меня есть флажок «Все». Я хочу проверить его, если другой флажок на странице «.invalidOffensive» также проверен. Но проблема заключается в том, что он входит как в конце, так и в конце, и мой флажок «Все» проверяется. Вот код:Если инструкции else выполняются в jquery
$('.invalidDropChk').live('click',function(){
if($(this).is(':checked')){
$(this).next().find('input[type="checkbox"]').attr('checked',true);
$(this).attr('checked',true);
var rad1 = document.getElementById("invalidDropChk");
if(rad1 != null && rad1.attributes['checked'])
rad1.checked = true;
}
else
{
$(this).next().find('input[type="checkbox"]').attr('checked',false);
$(this).attr('checked',false);
var rad1 = document.getElementById("invalidDropChk");
if(rad1 != null && rad1.attributes['checked'])
rad1.checked = false;
}
if (($(this).is(':checked')) && ($('.invalidOffensive').is(':checked'))){
$('.check-all ').prop('checked',true);
}
else{
$('.check-all ').prop('checked',false);
}
});
Код JSP страницы:
<ul class="invalidDrop">
<c:choose>
<c:when test="${invalidDropForm.invalidStreetAddress==true && invalidDropForm.invalidSubName==true && invalidDropForm.derogatoryNames==true && invalidDropForm.businessNames==true && invalidDropForm.offensiveNames==true}">
<li><input type="checkbox" class="check-all" checked /> All</li>
</c:when>
<c:otherwise>
<li><input type="checkbox" class="check-all" /> All</li>
</c:otherwise>
</c:choose>
<li>
<c:choose>
<c:when test="${invalidDropForm.invalidStreetAddress==true && invalidDropForm.invalidSubName==true}">
<input type="checkbox" class="check-inside invalidDropChk" id="invalidDropChk" checked /> Invalid Name/Address
</c:when>
<c:otherwise>
<input type="checkbox" class="check-inside invalidDropChk" id="invalidDropChk" /> Invalid Name/Address
</c:otherwise>
</c:choose>
<ul class="inneritem">
<li><sf:checkbox path="invalidStreetAddress"/> Invalid Street Address</li>
<li><sf:checkbox path="invalidSubName" /> Invalid Sub Name</li>
</ul>
</li>
<li>
<c:choose>
<c:when test="${invalidDropForm.derogatoryNames==true && invalidDropForm.businessNames==true && invalidDropForm.offensiveNames==true}">
<input type="checkbox" class="check-inside invalidOffensive" id="invalidOffensive" checked/> Offensive, Derogatory, Business Names
</c:when>
<c:otherwise>
<input type="checkbox" class="check-inside invalidOffensive" id="invalidOffensive"/> Offensive, Derogatory, Business Names
</c:otherwise>
</c:choose>
<ul class="inneritem">
<li><sf:checkbox path="derogatoryNames" /> Derogatory Names</li>
<li><sf:checkbox path="businessNames" /> Business Names</li>
<li><sf:checkbox path="offensiveNames" /> Offensive Names</li>
</ul>
</li>
</ul>
Можете ли вы разместить свой HTML-код? Кроме того, у вас есть минута, чтобы поговорить о [JSFiddle] (http://www.jsfiddle.net)? – cr0ss
@ cr0ss да отправил часть jsp из него ... никогда не использовал JSFiddle .. Пожалуйста, объясните подробнее .. –
Надеюсь, вы понимаете, что '.live()' давно устарел и даже удален из последних версий jQuery. [Динамическая форма '.on()'] (http://stackoverflow.com/questions/8752321/jquery-live-vs-on-method-for-adding-a-click-event-after-loading-dynamic -ht/8752376 # 8752376) может заменить его. – jfriend00