我假設其他事件不是總是在第一次切換之前觸發,否則你可能只是反轉這個函數。
你可以改變你的其他事件來觸發切換嗎?如果其他事件正在執行相同的任務,那麼這將是要走的路。
// From within the other event's handler
$(someselector).click(); // to fire the toggle
否則,你可以使用.data()
放置標誌的元素來檢查toggle()
還沒有被解僱。如果沒有,則進行第一次功能測試以查看該元素是否已被其他事件修改。
$(someselector).toggle(
function() {
var $th = $(this);
if(!$th.data('toggled')) { // Check if toggle has not yet run
$th.data('toggled', true); // If not, set flag it to show it has run
if(some_test_to_see_if_modified_externally) {
$th.click() // fire the second toggle
return; // return if element has been modified externally
}
}
// otherwise run the normal code
},
function() {
// your normal code
}
);
嗨帕特里克, 感謝您給我這個例子。如果我不正確,我會使用它,但如果你能告訴我另一個函數如何調用切換器,那將非常棒,因爲它會清除很多混亂! 非常感謝! – 2010-06-22 13:58:46
@Sixfoot - 是的,只是使用我在答案頂部附近給出的第一個代碼示例。 'toggle()'只是一個'click'事件。因此,當其他事件對具有'toggle'事件的元素進行更改時,只需對其執行'click()'事件:'$(someselector).click();'這將觸發切換它已被點擊。 – user113716 2010-06-22 14:03:49
好的,我會盡力回覆你!感謝帕特里克迄今爲止的所有幫助! – 2010-06-22 14:18:58