2012-04-10 46 views
0

不是全職jQuery,也不是Javascript開發人員,所以對不起,如果愚蠢的問題。我認爲我需要類似live函數來交換類,我會處理哪個值綁定到選擇器。使用toggleClass將事件處理更新爲新類

我基本上已經標記,看起來像這樣:

爲unenabling:

<span id="enable-1695" data-id="1695" class="unenable-item">unenable</span> 

用於啓用:

<span id="enable-1695" data-id="1695" class="enable-item">enable</span> 

我想使用toggleClass更新,以使項目點擊不可用之後。另外,我需要選擇器將運行時更新爲這些新值。我認爲這是通過實時方法發生的。我將如何實現這一目標。我目前正在手動執行它,但Javascript運行時不會正確更新事件處理。

我會用什麼javascript來確保這個工作正常?

任何幫助是明白的。

THX

+0

「更新運行時到這些新值」是什麼意思? – shashi 2012-04-10 21:52:18

+0

基本上,在通過addClass/removeClass爲enable-item/unenable-item更新類之後,它們指向舊的事件處理程序並需要更新爲新的事件處理程序。我認爲這是由現場處理,但不知道如何現在。 – timpone 2012-04-10 21:54:19

+0

不完全確定你在找什麼,但聽起來你應該看看on()。這應該解決您的問題http://api.jquery.com/on/ – AJak 2012-04-10 22:00:50

回答

0

首先,也許是「禁用」可能是一個更好的詞,選擇在這裏,但我們這裏不是雞蛋裏挑骨頭的語法......

我會認爲,當你點擊「 unenable」鏈接,就應該改變成爲一個‘啓用’鏈接:

$('.unenable-item').live('click', function() { 
    $(this) 
     .removeClass('unenable-item') 
     .addClass('enable-item') 
     .text('enable'); 
    doSomethingWith($(this).data('id')); 
}); 
$('.enable-item').live('click', function() { 
    // the inverse of the above 
}); 

在這裏,我用了live功能,勝負的是像.on或其棄用別名.bind,但它實際上並沒有重視事件的手由選擇器選擇的對象。相反,它將一個處理程序附加到文檔中,並且只要有任何點擊,它就會檢查選擇器,然後查看它是否匹配。您也可以使用.delegate進行更多目標匹配。文檔中存在更好的解釋(鏈接)。

相關問題