2016-11-21 8 views
-2

私はdivとその親divを持っています。親divをクリックすると、アクションを実行します。 div全体がクリック可能です。jQuery:preventDefault()/ return falseはスクリプトを停止しません

divには、別の機能が付属しています。クリックすると、親はその機能を実行してはいけません。

これは、子のdivはそのコンテンツとしてimgを持って

if ($(e.target).hasClass('prevent-choise')) { 
      e.preventDefault(); 
      return; 
      return false; 
     } 

// here is the rest of the code for parent element that should not execute when clicking child element (.prevent-choise) 

クリックし、両方のクラスprevent-choiseを持っていたものをチェックするための私のJSコードです。クリックすると、親に対して実行された機能はまだ実行されますが、ときどきのみ実行されます。私はこの背後にある論理を理解できません。

親はCSSでposition: relativeであり、子はposition: absolutez-index: 10です。

クリックした内容を正確に把握し、それに応じて行動する方法はありますか?

はあなたが falseを返していない

+1

https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation – David

+0

@Davidこれは動作しません。 event.stopPropagation()のjQueryドキュメンテーションを見ると、それは私がすでに行っているfalseを返すことと同じことです。 –

+1

上記のコードではreturn falseが返されます。したがって、上記のreturn文が関数の実行を終了するため、あなたは "falseを返す"ことはありません。 –

答えて

2

ありがとうございます。あなたはundefinedを返している:。

あなたが次の行に行おうと
return false; 

(残念ながら、その行を:デフォルトの戻り値ありません

return; 

、明示的falseを指定する必要があります関数が既に返されているため決して到達しません)。

+0

私はそれを削除し、残念なことに動作しません。最後に、私は両親にもう1人の親を追加し、jqueryなしでそれを解決することができました。 –

関連する問題