2017-06-01 184 views
0

我有一系列跨度(切換器)和一系列divs(切換爲)。我創建了一個make_toggle函數來接收切換器及其相應的切換參數。jQuery切換點擊

一切似乎工作種類確定,直到我試圖實現「切換點擊」。我試過的是附加到html click事件的函數,該函數檢查點擊的目標是否包含在切換元素中。在切換「返回」時,我會分離處理程序,所以我只在需要時進行檢查。

var check_if_clickingout = function(e) { 
    if (!toggled[0].contains(e.target)) { 
    toggle(); 
    } 
}; 

見琴:https://jsfiddle.net/andinse/65o211nc/11/

,它甚至沒有似乎工作了,但是當它使用的,它是引發許多更多的時間比必要的(這是我來這裏問的原因幫幫我)。

我在做什麼錯?在這種情況下,我將功能賦予一系列獨立的DOM元素,最有效的方法是什麼?

+0

爲什麼不直接使用'.toggleClass()'? – Twisty

回答

0

把這個放在這裏,這似乎是做同樣的事情。

$("span").click(function() { 
    $(this).siblings("div").toggleClass("blue"); 
}); 

也許我錯過了一些我沒有看到的例子。

查看更多:http://api.jquery.com/toggleclass/

+0

是的,對不起,我實際上並沒有試圖切換一個班 - 這是爲了簡化問題。在我的項目中,「激活」和「停用」內發生的不同/更加發展。 我的問題是:如何通過點擊它來「停用」一個div(在本例的上下文中),而不會干擾其他四個觸發器切換對夫婦的情況? 希望是有道理的。 – user6865443

+0

@ user6865443對不起,不,它沒有意義。太曖昧了。你可以添加'if($(this).hasClass(「blus」)){activate(); } else {deactivate(); }' – Twisty

+0

「this」代表什麼?是不是在下面的提取中已經發生了什麼?如果(!toggled.is('。blue')){ activate(); var toggle = function(){ } else { deactivate(); } };' 我的問題再次是「點擊」部分。 – user6865443