2017-11-22 13 views
0

これは、woocommerce 3.0にアップグレードした後、私のwordpressサイトで発生します。jquery clickイベントハンドラは登録されていても呼び出されません

HTMLは次のとおりです。私はol要素を検査する際クロムのdevのツールで

<ol class="flex-control-nav flex-control-thumbs"> 
    <li><img src="<source>" class="flex-active" draggable="false"></li> 
    <li><img src="<source>" draggable="false"></li> 
    <li><img src="<source>" draggable="false"></li> 
</ol> 

、私はそれが登録クリックイベントハンドラを持って見たが、私は何も起こらないイメージの1つをクリックしたとき。コールバックの開始点にブレークポイントを追加しようとしましたが、そこで停止しませんでした。

これはIE、Firefox、Chromeで発生するので、コード内の何かが間違っています。

ジャバスクリプトコードは、私は、ナビゲーションバーの画像をクリックすると、クリックイベントが何もしない、と画像が変化しないことをここで、より多くの問題を少し明確にするhttp://flexslider.woothemes.com/thumbnail-controlnav.html

からです。

さらにデバッグしてこれを発見しました。イベントが発生しているようですが、jqueryはコールバックをトリガーしません。ナビゲーション画像の1つをクリックすると、clickイベントのpath配列の引数は、im要素ではなくli要素で終了します。 jqueryコード(https://github.com/jquery/jquery/blob/master/src/event.js:394)の下にある現在の要素(パスの最後の1つ)が、イベントを登録するために使用されたセレクタから何も見つからないfind関数のシードとして渡されるため、これは問題ですjqueryの.delegate())は "a、img"なので、空を返し、イベントのコールバックは呼び出されません。

ですから、imgをクリックすると、li要素がimgではなくイベントをキャプチャするのはなぜですか?

おかげ

+0

は - そのハンドラは、場所の任意の数から来ることができました。 – arbuthnott

+0

また、子要素をクリックすると、親に到達する前に( 'img'または' li'レベルのいずれかで)イベント伝搬を停止させることができます。また、ハンドラは、特定のソートのクリックを、クリック前にクリックするのではなく、クリックすることもできます。 – arbuthnott

+0

私は問題はあなたが "ol"のイベントを登録していると言っているので、 "img"(おそらくこの$( "ol omg"))を受け取るとは思わないと思います。仕事...私は正しい? – nullqube

答えて

0

私は、問題を発見した私のimg要素には、CSSプロパティを持っていた:「ポインタイベント:なし;」

これを削除すると問題が解決します。

さらに読み:あなたは、特定のハンドラに焦点を当てるのではなく、不足しているどのような影響を与えると言うよりよくするかもしれないhttps://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events

関連する問題