簡體   English   中英

JQuery .click不像我期望的那樣工作。 為什么?

[英]JQuery .click doesn't work like I expect it to. Why?

為什么這個函數不適用於jquery-mobile?

當我點擊任何元素時,它會觸發警報(“單元格Nº”+60)

function insertOnClick(){
    for (j = 0; j < 6; j++) {
        for (i = 1; i < 11; i++) {
            n = 10 * j + i;
            el = "#num" + n;
            $(el).click(function() {
                alert("cell nº"+n);
            });
        }
    }
}

因為寫入的n將始終是您為該變量分配的最后一個數字 - 它將是執行單擊處理程序時的值,而不是您定義該函數的值。

使用封閉物

你需要使用一個閉包來實現你想要的:

function insertOnClick(){
    for (j = 0; j < 6; j++) {
        for (i = 1; i < 11; i++) {
            n = 10 * j + i;

            (function(number) {

                el = "#num" + number;
                $(el).click(function() {
                    alert("cell nº"+number);
                });

            }(n));
        }
    }
}

好主意

但是,使用單個處理程序會更好:

$('someselector').click(function(e) {
    var number = $(this)[0].id.replace('num', '');
    alert("cell nº" + number);
});
$('[id^="num"]').click(function() {
    alert($(this).attr('id').slice(3))
})

由於您使用的是jQuery,因此沒有理由進行任何循環,並且沒有理由將click事件添加到每個元素。 給每個元素一個公共類,並使用jQuery 1.7+,使用。

$(document).on("click", ".commonClass", function() {
    var elem = $(this);
    alert(elem.prop("id"));
});
function insertOnClick(){
    for (j = 0; j < 6; j++) {
        for (i = 1; i < 11; i++) {
            n = 10 * j + i;
            el = "#num" + n;
            $(el).click(function(n) {
                return function(){
                alert("cell nº"+n);
                }
            }());
        }
    }
}

暫無
暫無

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

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