Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery.click不';I don’我不能像我所期望的那样工作。为什么?_Javascript_Jquery_Jquery Mobile - Fatal编程技术网

Javascript JQuery.click不';I don’我不能像我所期望的那样工作。为什么?

Javascript JQuery.click不';I don’我不能像我所期望的那样工作。为什么?,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,为什么jquery mobile不能使用此函数 当我点击任何元素时,它会触发警报(“单元格编号”+60) function insertOnClick(){ 对于(j=0;j

为什么jquery mobile不能使用此函数

当我点击任何元素时,它会触发警报(“单元格编号”+60)

function insertOnClick(){
对于(j=0;j<6;j++){
对于(i=1;i<11;i++){
n=10*j+i;
el=“#num”+n;
$(el)。单击(函数(){
警报(“单元格编号”+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));
        }
    }
}
function insertOnClick(){
对于(j=0;j<6;j++){
对于(i=1;i<11;i++){
n=10*j+i;
el=“#num”+n;
$(el)。单击(函数(n){
返回函数(){
警报(“单元格编号”+n);
}
}());
}
}
}

因为您使用的是jQuery,所以没有理由执行任何循环,也没有理由向每个元素添加单击事件。为每个元素指定一个公共类,使用jQuery 1.7+,在上使用

$(document).on("click", ".commonClass", function() {
    var elem = $(this);
    alert(elem.prop("id"));
});

你确定你没有将点击事件绑定到同一个元素$(el)?“dont-work-as-i-want”但是我们怎么知道你想要什么,我们不是读心术的人!为什么不在
el
?此外,我认为问题在于范围,而不是全局变量。
$('someselector').click(function(e) {
    var number = $(this)[0].id.replace('num', '');
    alert("cell nº" + number);
});
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);
                }
            }());
        }
    }
}
$('[id^="num"]').click(function() {
    alert($(this).attr('id').slice(3))
})
$(document).on("click", ".commonClass", function() {
    var elem = $(this);
    alert(elem.prop("id"));
});