[英]trying to attach a click event to an id that only fires once
UPDATE證明代碼實際上正在工作,請參閱下面的答案
我在這里遇到一些麻煩。 我以為我在.one方法中找到了答案,但是顯然,.one意味着每頁僅一次,任何一次,這都不是我想要的。 這是我的意圖:
$("#someID").one('mouseover', function() {
//do some stuff
});
$("#someOtherID").one('mouseover', function() {
//do some stuff
});
我的期望是,一旦第一個事件觸發,該鼠標懸停事件將不再為那個元素觸發。
問題在於,一旦第一個觸發,第二個也不會觸發。 因此,.one方法似乎在第一個觸發后為所有元素禁用了所有鼠標懸停事件。
我沒想到這一點,我希望.one只適用於第一個元素。 這只是我對.one方法的理解上的缺陷還是我編碼錯誤?
如果這只是我的理解上的缺陷,那么有人可以指出正確的方向來糾正我的代碼嗎?
先感謝您!
這真是令人尷尬,我希望我不會為此而感到厭煩並再次阻止其堆棧溢出(有史以來最容易被阻止並且最難被阻止的事情)。
首先,@ CertainPerformance,感謝您抽出寶貴時間來查看我的問題。 我的實際代碼沒有您提到的兩個錯誤,我更新了我的文章以反映正確的語法。
老實說,我的代碼正在運行,我也不知道為什么。 我懷疑我一直在處理一些瘋狂的緩存問題,這些問題使我感到沮喪,因為我使用的inMotionHosting的評論非常好,並且在cPanel中禁用了緩存。
如果有的話,也許這個線程會有益於搜索“如何使事件僅在javascript中觸發一次”的人。
您可以像這樣使回調運行一次:
// Extend the function prototype
Function.prototype.once = function() {
// Variables
var func = this, // Current function
result;
// Returns the function
return function() {
// If function is set
if(func) {
// Executes the function
result = func.apply(this, arguments);
// Unset the function, so it will not be called again
func = null;
}
// (:
return result;
};
};
// Bind the event to the function you will use as a callback
$("#someID").on('mouseover', function() {
console.log('just once');
}.once());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.