簡體   English   中英

jQuery中的Click事件被調用兩次或更多次

[英]Click event in jQuery called twice or more

我是Java語言的新手,並制作了這樣的函數結構:

var project = ... ; // it's dynamic

// first function
$('body').on('click', '.projectmonitoring', function () {
    SetMonitoring(project);
});

// second function
function SetMonitoring(project) {
    var tasks = ... ; // this variable produced inside Ajax

    // third function
    $('#save').click(function () {
        // do something using project and tasks variable
    });
}

每當我調用第一個函數時,就會觸發SetMonitoring函數。 我多次調用了第一個函數(單擊兩次或多次)。 當我調用第三個函數時,發生的事情是執行第三個函數的次數與調用第一個函數的次數相同。

也許我的結構是錯誤的。 希望我已經解釋清楚了。 提前致謝。

創建一個全局變量,在第二個函數中設置它,然后在第三個函數中使用它。

var value_of_project;

// first function
$('body').on('click', '.projectmonitoring', function () {
    SetMonitoring(project);
});

// second function
function SetMonitoring(project) {
    //set value of project here
    value_of_project = "some value";
}

// third function
$('#save').click(function () {
    //do something using value_of_project 
});

好吧,您可以使用:$('#save')。off('click')。click(function(){...但是更好的解決方案是收回代碼。您無需將項目par傳遞給setmonitoring如果它是全局函數,則可以使用...但是在任何情況下,在ivent處理程序中附加事件處理程序都是一種反模式...

為了確保您的函數僅被調用一次,

one -

var project = ... ; // it's dynamic

// first function
$('body').one('click', '.projectmonitoring', function () {
    SetMonitoring(project);
});

// second function
function SetMonitoring(project) {
    var tasks = ... ; // this variable produced inside Ajax

    // third function
    $('#save').click(function () {
        // do something using project and tasks variable
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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