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