2011-11-08 49 views
1

通過我確定一個循環,但我最終將它追溯到回調中事件對象參數的更改。讓我來概述一下這個問題:升級到jQuery 1.7以及對事件對象的更改

我最近從1.6.2升級到jquery 1.7,並注意到一些奇怪的事情發生。

最明顯的是我的jQuery的UI(16年8月1日) 「sortables」 開始有了一些不必要的副作用:

HTML結構

<ul id="ulFeatured"> 
    <li><span class="Title">Item 1</span></li> 
    <li><span class="Title">Item 2</span></li> 
    <li><span class="Title">Item 3</span></li> 
</ul> 

<ul id="ulAvailable"> 
    <li><span class="Title">Item 4</span></li> 
    <li><span class="Title">Item 5</span></li> 
    <li><span class="Title">Item 6</span></li> 
</ul> 

JQUERY

$("#ulFeatured, #ulAvailable").sortable 
(
    { 
     connectWith: ".connectedSortable", 
     receive: function (event, ui) 
     { 
      console.log(event.target); 
     } 
    } 
).disableSelection(); 

成績

1.6.12 
<ul id="ulFeatured" class="connectedSortable ui-sortable NoItems" style=""> 

1.7 
<span class="Title"> 

任何人對此有任何見解?我想使用event.target的原始功能作爲接收項目的項目。

謝謝! :)

+1

在W3C符合瀏覽器中,* event.target *是最初調度該事件的元素。據我所知,你在UL上設置了一個監聽器,但點擊必須在一個範圍內。所以在我看來,* event.target *應該是跨度(但我不知道可排序*正在做什麼,它可能會「修復」事件對象並更改目標屬性的值)。 – RobG

+0

「Sortable」是jquery UI庫中的一項功能,它可以在UL之間拖放元素。我正在使用內置的「接收」事件偵聽器來檢測從另一個添加到UL的項目。 – nokturnal

回答

2

您可以使用jQuery方法.closest()來查找該項目所屬的列表。

$("#ulFeatured, #ulAvailable").sortable 
(
    { 
     connectWith: ".connectedSortable", 
     receive: function (event, ui) 
     { 
      console.log($(event.target).closest('ul')); 
     } 
    } 
).disableSelection(); 

Working example here

+0

這就是我想出的確切工作。我只是想知道jquery的變化,或者看起來,bug修復引起了事件對象W3C的投訴。 – nokturnal