另一個初學者 - 我自己的問題:可以在正在執行的時候停用.click(函數)嗎?
是否有可能禁用.click(function)
而它正在進行[滑動向上/向下和做一些id開關]?
我有一堆錨使用相同的功能,我不希望用戶點擊另一個鏈接,而仍然有一些slidingUp/Down正在進行。爲了獲得這種效果,我必須在正在進行時阻止該功能。
任何想法的人?
另一個初學者 - 我自己的問題:可以在正在執行的時候停用.click(函數)嗎?
是否有可能禁用.click(function)
而它正在進行[滑動向上/向下和做一些id開關]?
我有一堆錨使用相同的功能,我不希望用戶點擊另一個鏈接,而仍然有一些slidingUp/Down正在進行。爲了獲得這種效果,我必須在正在進行時阻止該功能。
任何想法的人?
您可以在點擊處理程序中設置布爾標誌,並在動畫結束時取消設置它。
然後,在處理程序的頂部,如果標誌被設置,您可以return false;
。
你可以這樣說:
$('some_selector').click(function() {
var running = false;
return function() {
if (running === false) {
running = true;
// do animation stuff;
// put this in your callback:
running = false;
}
return false;
};
}());
這將禁用動畫,而running
等於true
。
你可以檢查是否有您關心使用:animated
選擇,目前正在動畫,這樣的元素:
$("a.myClass").click(function() {
if($("a.myClass:animated").length) return false;
//animate/do stuff
});
當正在動畫任何a.myClass
元素,點擊次數不會有任何效果。
Bah!你打敗了我!哈哈=) – John 2010-11-14 00:03:14
@elusive - 你不能,重新讀這個問題...*其他*元素可能是動畫的,不一定是你所在的元素。我不認爲它實際上甚至是相同的選擇器,可能是動畫的兒童/相關元素。 – 2010-11-14 00:14:30
看看:animated
選擇器。正如文檔所述,它將返回當前正在進行的所有元素。如果您有特定元素正在檢查,您可以使用它的ID或類以及此選擇器來檢查它是否正在運行動畫。
$("#myButton").click(function(){
if ($("#myDiv:animated").length === 0) {
// do awesome animation here
} else {
// brown explosions! Dumbledore dies, so does Hedwig!
return false;
}
});
喜歡它需要在這裏running'的'範圍將不會在所有的內容相一致......也有更簡單的方法來做到這一點:) – 2010-11-14 00:03:12
@Nick:如何範圍變化?你能詳細解釋一下嗎? – jwueller 2010-11-14 00:06:01
@Nick - 它似乎與靜態數量的元素一起工作,但如果處理程序需要再次綁定到新元素,則不會。這是你的意思嗎? http://jsfiddle.net/jYREj/ – user113716 2010-11-14 00:06:45