2010-10-30 70 views
1

我試圖創建一個簡單的按鈕管理器中選擇並最終取消選擇媒體鏈接檢查其中包含CSS類.my_classimg元素,爲什麼不起作用?jQuery的:檢查元素是否被分配給一個變種

var last_selected; 
$("img.my_class").click (function() { 
    if (last_selected != null) alert ($(this) == last_selected); // returns false everytime 
    last_selected = $(this); 
}); 

回答

0

每次包裝this時,都會創建一個新的jQuery對象。兩個jQuery對象不相等,僅僅因爲它們包裝了相同的元素($(this) != $(this))。

相反,將this本身分配給last_selected,並且所有內容都應按預期工作。

var last_selected; 
$("img.my_class").click (function() { 
    if (last_selected != null) alert (this == last_selected); 
    last_selected = this; 
}); 
+0

應該在比較中使用'==='。 – Pointy 2010-10-30 13:00:49

+0

它的工作原理,感謝您的幫助 – vitto 2010-10-30 13:29:21

+0

你介意給我一個這裏的手:http://stackoverflow.com/questions/4532009/placing-error-message-for-a-checkbox-array ?? – eddy 2010-12-26 17:59:07

1

它不起作用,因爲每次調用$(this)時都會創建一個新的jQuery包裝器對象。

相反,嘗試只是節省「這個」:

var last_selected; 
$("img.my_class").click (function() { 
    if (last_selected != null) alert (this === last_selected); 
    last_selected = this; 
}); 
1

爲什麼不分配「選擇」級到當前選定的IMG?

$('img.my_class').click(function() 
{ 
    // remove the selected class from the previous selected 
    $('img.my_class.selected').removeClass('selected'); 
    // flag the current one as selected 
    $(this).addClass('selected'); 
}); 
相關問題