非常簡單地說:行currentItem.toggleClass('open');
似乎並沒有工作。jQuery toggleClass不工作?
更準確地說,當用螢火蟲檢查結果時,我可以看到相關元素上的「打開」類閃爍(出現並立即消失)。所以就像這個函數實際上觸發了兩次(當然,我只點擊一次)。
有人可以解釋爲什麼這是,以及如何防止它?
這裏是我的jQuery代碼:
$('div.collapse ul.radio_list li input[type=radio]').click(function (event) {
var currentTree = $(this).parent().parent().parent();
var currentItem = $(this).parent().parent();
var currentGroup = currentItem.attr('rel');
$(this).parents('ul').children('li').removeClass('select');
if ($(this).is(':checked')) {
currentItem.addClass('select');
}
currentItem.toggleClass('open');
var currentLevel = 0;
if (currentItem.is('.level1')) {currentLevel = 1;}
if (currentItem.is('.level2')) {currentLevel = 2;}
if (currentItem.is('.level3')) {currentLevel = 3;}
var nextLevel = currentLevel + 1;
currentTree.children('li').filter('li[rel ^=' + currentGroup + '].level' + nextLevel).animate({'height': 'show', 'opacity': 'show'}, 250).addClass('currentChild');
});
這裏是我的HTML代碼的一部分,稍作簡化爲更好的可讀性(不是很漂亮,我知道,但我只對HTML輸出控制有限):
<div class="col_left collapse">
<ul class="radio_list" rel="7">
<li class="onglet level0" rel="group1">
<span class="onglet level0">
<input type="radio" />
<label>Services Pratiques</label></span>
<input type="hidden" value="1">
</li>
在此先感謝。
你確定你不會以某種方式綁定這個函數兩次嗎? – NOtherDev 2010-11-02 11:22:14
@A .:我不這麼認爲:這是我唯一一次在我的頁面中使用「.click()」,也是唯一一次修改此類名稱。我也嘗試使用其他類名,但沒有更好的結果。 – s427 2010-11-02 11:26:48
@A .:其實你是對的!我正在使用一個我不太清楚的框架(Prado),而且我不知道JS文件已經被包含在HTML頭兩次。糾正這個問題解決了這個問題。謝謝! – s427 2010-11-02 11:39:23