簡體   English   中英

嘗試將點擊事件附加到只會觸發一次的ID

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM