2017-06-01 16 views
0

私は一連のスパン(トグラー)と一連のdiv(をトグルしています)を持っています。私はtogglerとその対応するtoggled引数を受け取る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

はい、申し訳ありませんが、私は実際にクラスを切り替えることを試みていません - これは問題を簡素化することでした。私のプロジェクトの文脈では、 "活性化"と "非活性化"の間で何が起こるかは異なる/より発展しています。 私の質問は、トグルトグルカップルの他の4つのインスタンスに干渉することなく、divを(この例のコンテキストで)「非アクティブ化」するにはどうすればいいですか? それは意味をなさないことを望みます。 – user6865443

+0

@ user6865443申し訳ありません、いいえ、意味がありません。あまりにもあいまいです。 if($(this).hasClass( "blus")){activate();}を追加することができます。 } else {deactivate(); } ' – Twisty

+0

ここに「this」は何を表していますか?下の抽出で既に起こっていることではありませんか? 'var toggle = function(){ if(!to( '。blue')){ activate(); } else { deactivate(); } }; ' もう一度私の問題は「クリックする」部分です。私の答えでは – user6865443

関連する問題