2017-09-04 6 views
0

私は、類似のタイトルで多くの質問を見てきましたが、私の人生の間、何が起こっているのか把握することはできません。私はKnockoutJS + jQueryを使ってリストを作成し、別の関数のマップ上でそれを強調表示する隠れリストにクラスを追加するシステムを持っています。十分なシンプルjQueryのホバーイベントはULで発生しませんか?

<ul data-bind="foreach: markers" class="locationListMain"> 
    <ul class="locationList"> 
     <h3 class="resultTITLE"> 
      <span data-bind="text: title"></span> 
     </h3> 
     <p class="resultLATLONG"> 
      LAT 
      <span data-bind="text: lat"></span> 
      , LONG 
      <span data-bind="text: lng"></span> 
     </p> 
    </ul> 
</ul> 

は、ここに私のHTMLです。

$('.locationList').hover(function(){ 
    console.log('hovering'); 
    $(this).addClass('active'); 
}, function() { 
    console.log('not hovering!'); 
    $(this).addClass('active'); 
}); 

をしかし、私は火に何かを得ることはできません。今、私はjQueryを介して、そのよう.locationListにホバーイベントを呼び出すようにしようとしています。奇妙なことは、.locationList要素を削除し、そのクラスをトップレベル<ul>に追加すると問題なく動作します。私はそれがCSSの問題かどうか疑問に思っていますが、私もそれを釘付けにすることはできません。喜びなくトップzインデックスに移動しました。思考?助けや洞察力を大いに評価します。ありがとう!

+2

これは、実行時にDOMで利用可能になる前に、ホバーイベントリスナーを '.locationList'にバインドしていることを意味します。あなたのJSが実行され、要素がまだ利用可能でないとき、ホバーイベントをセレクタによって返された空のセットにバインドします。親ノード上で、要素がレンダリングされるときにこのバインディングを実行するか、イベントのバブリングを使用するか(つまり、$ someParent.on( 'mouseenter'、 '.locationList'、function(){...}))実行時に存在します。 – Terry

+0

$(document).readyの下でこの関数を動かすと、このトリックが実行されました。ありがとう、トン! – IkeDoud

答えて

0

テリーのコメントのおかげで、それが分かりました。ホバーイベントリスナーは、domで利用可能になる前に要素にバインドしようとしていました。ホバー機能を下に移動

$(document).ready(function(){}) 

このトリックを行った。

関連する問題