2017-09-04 33 views
0

我已經瀏覽了類似標題的大量問題,並且不能在我的生活中弄清楚發生了什麼。我有一個使用KnockoutJS + jQuery的系統,它將填充一個列表並將一個類添加到一個懸停列表中,該列表將在另一個函數的地圖上突出顯示它。jQuery懸停事件不符合UL標準?

這裏是我的HTML:

<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> 

夠簡單。現在我想通過jQuery調用懸停事件上.locationList像這樣:

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

但我不能得到任何火災。奇怪的是,如果我刪除.locationList元素,並將該類添加到最高級別<ul>,它可以毫無問題地工作。我想知道這是否是一個CSS問題,但我也不能指出這一點。已經沒有喜悅地將它移到頂部z索引。思考?將不勝感激任何幫助或見解。謝謝!

+2

這可能意味着您在運行時在DOM中可用之前將懸停事件偵聽器綁定到'.locationList'。當你的JS被執行並且該元素尚不可用時,那麼你將懸停事件綁定到由選擇器返回的空集。你應該在元素被渲染時執行這個綁定,或者在父節點上使用事件冒泡(即'$ someParent.on('mouseenter','.locationList',function(){...})')這是在運行時出現的。 – Terry

+0

在$(document).ready下移動這個函數就完成了。萬分感謝! – IkeDoud

回答

0

感謝特里的評論,想通了。懸停事件偵聽器在dom中可用之前嘗試綁定到該元素。移動懸停功能在

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

做了詭計。