JavaScriptのクリックイベントが二回JSの問題を実行します
でjQueryの存在アンバインド()メソッド、最初のアンバンドリング[追加]をクリックしイベント、のためのソリューション:
$( "M-レイアウト設定")。アンバインド( 'クリック')をクリックして(関数(){ // ここで埋めるロジックコード })
------
jsのコードの使用は、ページがロードされた後クリックイベントを追加する必要があるため、コードが2回実行]をクリックした後に見つけることができ、トグル効果があるので、原因とポップアップが表示され、すぐに失われました
いくつかの情報を確認し、クリックイベントコードを停止するようにメソッドを追加する必要性をバブリング、これが原因バブリングであることがわかりました。
e.stopPropagation();
しかし、私はまだ見つけ
、背中が見つかっOFF機能がバインド機能上の事象によって解放することができ、それは正常ですので、jsのコードでオフ機能で、関数呼び出しの前に:
$( "li.taskli")。オフ( 'をクリック'、 'A')。( 'クリック'、 'A'、上の機能(E){ // バインドに結合取り外す前に中止 // $を(文書).on( 'クリック' 、 'li.taskli A'、機能(E){// オリジナルの書き込み はconsole.log( "ここでは壁紙" ) IF($は(この).parent()。「(DIVを探します.popover ')サイズ()> 0 ) { $(この).popover('破棄する' ) } 他{ VAR UUID = $(この).ATTR(' targetuuid ' ); VARの taskhtml =' <DIV ID = " taskview「> '+ popheadDivHtml()+' </ DIV> ' ; $(この).popover({ 配置:'底部' 、 タイトル:UUID、 HTML: '本当' 、 コンテンツ:taskhtml })ポップオーバー( 'トグル' )。 getResultFromFile(UUID) } e.stopPropagation()。// 阻止冒泡 })
jqueryのバインドクリックイベントを解決するために一度二度の問題を行っ]をクリックします
問題を見つけ:F12ブラウザを配置することにより、最初の外観を呼び出すことを2回クリックします。
問題を再現:
$( "#のmail_span")。上の(、 "クリック" 機能を(){ 場合($( "treeselect ")。子供たち("。treeselectアップ")。CSS("表示")=="なし" ) { treeSelectClick(); VAR $アップ= $( "treeselect。 ")(" treeselectアップ"を見つける。); $ up.css({ 表示: "ブロック" }); $( "#mail_bottom")ATTR。 ( "クラス"、 "glyphicon glyphicon三角形トップ" ); } 他{ treeSelectClick(); $( "#mail_bottom")ATTR( "クラス"、 "。glyphicon glyphicon三角形底」 ); } } })
問題解決:
$( "#のmail_span")。( "クリック"、上の機能(E){ 場合(!e.isPropagationStopped()){ // 确定のstopPropagation是否被调用过 場合($(」。treeselect1 ")。子供たち(" .treeselectアップ")、CSS("ディスプレイ")=="なし" ){ treeSelectClick(); VAR $アップ= $(" treeselect1 ")(見つける。" treeselectアップ」。。); $ up.css ({ 表示: "ブロック" }); $( "#mail_bottom")ATTR( "クラス"、 "glyphicon glyphicon三角形トップ" ); } 他{ treeSelectClick()。 $("#mail_bottom")ATTR( "クラス"、 "glyphicon glyphicon三角形底。" ); } } e.stopPropagation(); // である必要があり、そうでない場合のstopPropagationを決定することができない()e.isPropagationStoppedこれまで呼び出します })
情報へのアクセス:
event.preventDefaultは() :デフォルトの動作を防ぐには、()でpreventDefaultがevent.isDefaultPreventedによって呼び出されているかどうかを判断することができます
)するevent.stopPropagation( :イベントバブリングを停止し、イベントがDOMにバブリングからイベントを防ぐためですバブリングツリーは、古い要素上の任意のイベント・ハンドラをトリガしていない、あなたはのstopPropagationが呼び出されているかどうかを判断するためにevent.isPropagationStopped()を使用することができます