Javascript 是否可以在特定条件下注册单击事件?
假设您有一个动态配置文件页面。当用户单击编辑按钮时,页面中的某些div将起作用。例如,当用户单击div时,它会发生一些事情。Javascript 是否可以在特定条件下注册单击事件?,javascript,jquery,Javascript,Jquery,假设您有一个动态配置文件页面。当用户单击编辑按钮时,页面中的某些div将起作用。例如,当用户单击div时,它会发生一些事情。 因此,我在这些div上使用了JQuery Click()事件。但我只想在页面处于编辑模式时注册此项。目前我有这样的想法: $(".someClass").click(function() { if(editMode) { //do stuff } }); 但这不是有点低效吗?因为即使不在编辑模式下,它也会注册单击事件。我想要实现的是: i
因此,我在这些div上使用了JQuery Click()事件。但我只想在页面处于编辑模式时注册此项。目前我有这样的想法:
$(".someClass").click(function() {
if(editMode) {
//do stuff
}
});
但这不是有点低效吗?因为即使不在编辑模式下,它也会注册单击事件。我想要实现的是:
if(editMode) {
$(".someClass").click(function() {
//do stuff
});
}
显然这行不通。是否有更好的方法来实现此目标?您可以这样做,但要使用
.on()
事件处理程序附件,如
if(editMode) {
$(document).on('click', ".someClass", function() {
//do stuff
});
}
然后,可以使用.off()
分离此事件处理程序
$(".someClass").off("click");
您可以这样做,但要使用事件处理程序附件,如
if(editMode) {
$(document).on('click', ".someClass", function() {
//do stuff
});
}
然后,可以使用.off()
分离此事件处理程序
$(".someClass").off("click");
您可以这样做,但要使用事件处理程序附件,如
if(editMode) {
$(document).on('click', ".someClass", function() {
//do stuff
});
}
然后,可以使用.off()
分离此事件处理程序
$(".someClass").off("click");
您可以这样做,但要使用事件处理程序附件,如
if(editMode) {
$(document).on('click', ".someClass", function() {
//do stuff
});
}
然后,可以使用.off()
分离此事件处理程序
$(".someClass").off("click");
进入编辑模式时,可以绑定所有处理程序。然后,当用户离开编辑模式时,可以使用以下命令解除绑定:
$(".someClass").off("click");
进入编辑模式时,可以绑定所有处理程序。然后,当用户离开编辑模式时,可以使用以下命令解除绑定:
$(".someClass").off("click");
进入编辑模式时,可以绑定所有处理程序。然后,当用户离开编辑模式时,可以使用以下命令解除绑定:
$(".someClass").off("click");
进入编辑模式时,可以绑定所有处理程序。然后,当用户离开编辑模式时,可以使用以下命令解除绑定:
$(".someClass").off("click");
当处于编辑模式时,在容器上添加一个类,例如:“edit”,否则将其删除
$(document).on('click', ".edit .someClass", function() {
//do stuff
});
当处于编辑模式时,在容器上添加一个类,例如:“edit”,否则将其删除
$(document).on('click', ".edit .someClass", function() {
//do stuff
});
当处于编辑模式时,在容器上添加一个类,例如:“edit”,否则将其删除
$(document).on('click', ".edit .someClass", function() {
//do stuff
});
当处于编辑模式时,在容器上添加一个类,例如:“edit”,否则将其删除
$(document).on('click', ".edit .someClass", function() {
//do stuff
});
我的建议是:
.on()
方法为该类名创建一个单击处理程序注: 您也可以将其更改为
$(document)
,但最好使用距离目标元素最近的静态父元素。我的建议是:
.on()
方法为该类名创建一个单击处理程序注: 您也可以将其更改为
$(document)
,但最好使用距离目标元素最近的静态父元素。我的建议是:
.on()
方法为该类名创建一个单击处理程序注: 您也可以将其更改为
$(document)
,但最好使用距离目标元素最近的静态父元素。我的建议是:
.on()
方法为该类名创建一个单击处理程序注:
您也可以将其更改为
$(document)
,但最好使用距离目标元素最近的静态父元素。您有多个问题
函数AnimateTile(id,z,w,h,now=true)中出现语法错误{
,您可以改为执行以下操作
function AnimateTile(id, z, w, h, now) {
now = now == undefined ? true : now;
然后,编辑处理程序必须位于单击处理程序中,因为无论何时edit
的值发生更改,您都需要添加或删除该处理程序
$(".bigtile").click(function (event) {
edit = !edit;
if (edit) $(this).css("background-color", "red");
else $(this).css("background-color", "green");
if (edit) {
$(".tile").on('click.edit', function (event) {
clicked = !clicked;
if (clicked) {
switch ($(this).attr('id')) {
case "tile1":
AnimateTile("tile1", 100, 210, 210);
break;
case "tile2":
AnimateTile("tile2", 100, 210, 210);
break;
case "tile3":
AnimateTile("tile3", 100, 210, 210);
break;
case "tile4":
AnimateTile("tile4", 100, 210, 210);
break;
default:
break;
}
} else {
switch ($(this).attr('id')) {
case "tile1":
AnimateTile("tile1", 0, 100, 100, false);
break;
case "tile2":
AnimateTile("tile2", 0, 100, 100, false);
break;
case "tile3":
AnimateTile("tile3", 0, 100, 100, false);
break;
case "tile4":
AnimateTile("tile4", 0, 100, 100, false);
break;
default:
break;
}
}
});
} else {
$(".tile").off('click.edit');
}
});
演示:
同时阅读,并且您有多个问题
函数AnimateTile(id,z,w,h,now=true)中出现语法错误{
,您可以改为执行以下操作
function AnimateTile(id, z, w, h, now) {
now = now == undefined ? true : now;
然后,编辑处理程序必须位于单击处理程序中,因为无论何时edit
的值发生更改,您都需要添加或删除该处理程序
$(".bigtile").click(function (event) {
edit = !edit;
if (edit) $(this).css("background-color", "red");
else $(this).css("background-color", "green");
if (edit) {
$(".tile").on('click.edit', function (event) {
clicked = !clicked;
if (clicked) {
switch ($(this).attr('id')) {
case "tile1":
AnimateTile("tile1", 100, 210, 210);
break;
case "tile2":
AnimateTile("tile2", 100, 210, 210);
break;
case "tile3":
AnimateTile("tile3", 100, 210, 210);
break;
case "tile4":
AnimateTile("tile4", 100, 210, 210);
break;
default:
break;
}
} else {
switch ($(this).attr('id')) {
case "tile1":
AnimateTile("tile1", 0, 100, 100, false);
break;
case "tile2":
AnimateTile("tile2", 0, 100, 100, false);
break;
case "tile3":
AnimateTile("tile3", 0, 100, 100, false);
break;
case "tile4":
AnimateTile("tile4", 0, 100, 100, false);
break;
default:
break;
}
}
});
} else {
$(".tile").off('click.edit');
}
});
演示:
同时阅读,并且您有多个问题
函数AnimateTile(id,z,w,h,now=true)中出现语法错误{
,您可以改为执行以下操作
function AnimateTile(id, z, w, h, now) {
now = now == undefined ? true : now;
然后,编辑处理程序必须位于单击处理程序中,因为无论何时edit
的值发生更改,您都需要添加或删除该处理程序
$(".bigtile").click(function (event) {
edit = !edit;
if (edit) $(this).css("background-color", "red");
else $(this).css("background-color", "green");
if (edit) {
$(".tile").on('click.edit', function (event) {
clicked = !clicked;
if (clicked) {
switch ($(this).attr('id')) {
case "tile1":
AnimateTile("tile1", 100, 210, 210);
break;
case "tile2":
AnimateTile("tile2", 100, 210, 210);
break;
case "tile3":
AnimateTile("tile3", 100, 210, 210);
break;
case "tile4":
AnimateTile("tile4", 100, 210, 210);
break;
default:
break;
}
} else {
switch ($(this).attr('id')) {
case "tile1":
AnimateTile("tile1", 0, 100, 100, false);
break;
case "tile2":
AnimateTile("tile2", 0, 100, 100, false);
break;
case "tile3":
AnimateTile("tile3", 0, 100, 100, false);
break;
case "tile4":
AnimateTile("tile4", 0, 100, 100, false);
break;
default:
break;
}
}
});
} else {
$(".tile").off('click.edit');
}
});
演示:
同时阅读,并且您有多个问题
函数AnimateTile(id,z,w,h,now=true)中出现语法错误{
,您可以改为执行以下操作
function AnimateTile(id, z, w, h, now) {
now = now == undefined ? true : now;
然后,编辑处理程序必须位于单击处理程序中,因为无论何时edit
的值发生更改,您都需要添加或删除该处理程序
$(".bigtile").click(function (event) {
edit = !edit;
if (edit) $(this).css("background-color", "red");
else $(this).css("background-color", "green");
if (edit) {
$(".tile").on('click.edit', function (event) {
clicked = !clicked;
if (clicked) {
switch ($(this).attr('id')) {
case "tile1":
AnimateTile("tile1", 100, 210, 210);
break;
case "tile2":
AnimateTile("tile2", 100, 210, 210);
break;
case "tile3":
AnimateTile("tile3", 100, 210, 210);
break;
case "tile4":
AnimateTile("tile4", 100, 210, 210);
break;
default:
break;
}
} else {
switch ($(this).attr('id')) {
case "tile1":
AnimateTile("tile1", 0, 100, 100, false);
break;
case "tile2":
AnimateTile("tile2", 0, 100, 100, false);
break;
case "tile3":
AnimateTile("tile3", 0, 100, 100, false);
break;
case "tile4":
AnimateTile("tile4", 0, 100, 100, false);
break;
default:
break;
}
}
});
} else {
$(".tile").off('click.edit');
}
});
演示:
另请阅读,并且为什么您说第二个版本不起作用,除非您必须在条件不满足时删除处理程序-如果已经添加了处理程序(查看
.off()
和事件名称空间)因为这根本不起作用:看看为什么你说第二个版本不起作用,除非你必须删除处理程序,如果条件不满足-如果它已经被添加(查看.off()
和事件名称空间)因为这根本不起作用:看看为什么你说第二个版本不起作用,除非你必须删除处理程序,如果条件不满足-如果它已经被添加(查看.off()
和事件名称空间)因为这根本不起作用:看看为什么你说第二个版本不起作用,除非你必须删除处理程序,如果条件不满足-如果它已经被添加(查看.off()
和事件名称空间)因为这根本不起作用:请参阅,但这不会在Op离开编辑模式时删除处理程序。@Barmar我以为Op希望根据条件附加一个事件,th