在搜索表單中,我允許用戶使用複選框選擇和取消選擇多個位置。爲了改善搜索查詢,一些位置被子位置分開。在jquery動畫中禁用/啓用複選框
在此JSFIDDLE LINK EXAMPLE上,位置英國由不同的子位置組成。
過程:
當用戶點擊了英國位置(參見鏈接),一個jQuery事件已經發展到隱藏/顯示其子位置。
注意:已經開發了兩個其他事件來同步(檢查/取消選中)主要位置及其子位置。
問題:
當我們在「屋」所在地英國複選框及其子位置的div容器之間的同步無法正常工作迅速點擊很多次。 例如:可以檢查英國的位置而不顯示其子位置。
有沒有辦法在動畫過程中禁用用戶點擊複選框?
HTML
</ul><ul id="locations"><li id="title"><b>Locations</b></li><div class="list-container">
<li>
<label class="location-checkbox ">
<input value="15" name="locations[]" type="checkbox" > SE Asia - 15 <span></span>
</label>
</li>
<li>
<label class="location-checkbox ">
<input value="8" name="locations[]" type="checkbox" > South America - 8 <span></span>
</label>
</li>
<li class="london-parent-country">
<label class="location-checkbox">
<input id="checkboxuk" value="9" name="locations[]" type="checkbox"> UK - 9 <span></span>
</label>
</li>
<div id="uk-child">
<li>
<label class="location-checkbox child-location">
<input class="uk" value="17" name="locations[]" type="checkbox" style="margin-left:50px;"> England - 17 <span></span>
</label>
</li>
<li>
<label class="location-checkbox child-location">
<input class="uk" value="20" name="locations[]" type="checkbox" style="margin-left:50px;"> Northern Ireland - 20 <span></span>
</label>
</li>
<li>
<label class="location-checkbox child-location">
<input class="uk" value="18" name="locations[]" type="checkbox" style="margin-left:50px;"> Scotland - 18 <span></span>
</label>
</li>
<li>
<label class="location-checkbox child-location">
<input class="uk" value="19" name="locations[]" type="checkbox" style="margin-left:50px;"> Wales - 19 <span></span>
</label>
</li>
</div>
<li>
<label class="location-checkbox ">
<input value="10" name="locations[]" type="checkbox" > Western Europe - 10 <span></span>
</label>
</li>
<br/>
</div></ul><!-- list-container -->
JQUERY
$('li.london-parent-country label').live('click', function (event) {
var ttt= $('#checkboxuk').prop("checked")
console.log("every-click: "+ttt);
if($('.london-parent-country').hasClass("animated")){ /* Wait the animation to be completed */ }
else {
// Disable checkboxes during animation - not working
// $('input[value=9]').prop("disabled", true);
// <input type="checkbox" disabled="disabled" checked="checked">
// Add or remove the open class to know if we need to hide/show the div
$('#uk-child').toggleClass("open");
var current_class = $('#uk-child').attr('class');
if (current_class=="open"){
// We show sub-locations
// Add this class to cancelled this function onclick
$('.london-parent-country').addClass("animated");
$("#uk-child").stop().show(1000, "easeOutQuart", function() {
// Remove class when the animation is done.
$('li.london-parent-country').removeClass("animated");
$('input[value=9]').prop("disabled", false);
});
}
else {
// We hide sub-locations
$('.london-parent-country').addClass("animated");
$("#uk-child").stop().hide(1000, "easeOutQuart", function() {
// Remove the animated class + enable checkboxes
$('li.london-parent-country').removeClass("animated");
$('input[value=9]').prop("disabled", false);
});
}
}
});
肯定是有。檢查出來[JSFiddle](http://jsfiddle.net/5qM8S/) – MonkeyZeus
有沒有辦法使它與自定義複選框圖像工作?現在做一些測試 – Romain
我不推薦它,但你必須爲複選框的每個狀態製作圖像並相應地顯示它們,例如ckbox_unchecked_enabled.gif,ckbox_unchecked_disabled.gif,ckbox_checked_enabled.gif,ckbox_checked_disabled.gif。你將不得不建立自定義'.on('click',function(){});'規則來確定是否允許用戶點擊它們。我保證你會遇到可維護性問題。 – MonkeyZeus