我正在尝试操纵一个id
使用相同的按钮来执行超过 2 个操作。
它类似于:
var id;
if(something == 2){
id = "id";
}else{
id = "id2";
}
$(".myClass").attr("id", id);
但是,它不好,因为如果我尝试使用id
我设置的,将无法正常工作,可能是因为文档已经加载,id
按钮中没有。
不认为这需要一个例子,但我做到了。
还有另一种方法吗?
我正在尝试操纵一个id
使用相同的按钮来执行超过 2 个操作。
它类似于:
var id;
if(something == 2){
id = "id";
}else{
id = "id2";
}
$(".myClass").attr("id", id);
但是,它不好,因为如果我尝试使用id
我设置的,将无法正常工作,可能是因为文档已经加载,id
按钮中没有。
不认为这需要一个例子,但我做到了。
还有另一种方法吗?
如果您需要将操作绑定到某个未来元素,通常最好使用委托,这意味着不是在元素本身上而是在其祖先之一上监听事件:
$("body").on("click", "#id2", function(){
alert( "Clicked!" );
});
此时,您可以动态设置 ID:
$(".myClass").attr("id", function(){
return something === 2
? "id"
: "id2" ;
});
当我在 body 上监听 click 事件时,通常最好使用更接近的父元素,这样事件在处理之前不必冒太多气泡。
用这个:
$(document).on('click', '#alertMe', function(){
alert('Working');
});
将第二次点击事件移动到第一次点击事件中,然后它将起作用。
$(".button1").click(function(){
$(".button2").attr("id", "alertMe");
$("#alertMe").click(function(){
alert('Working');
});
});
像这样试试
$("#alertMe").live("click",function(){
alert('Working');
});
不要使用 'click()' 绑定处理程序,使用 live:
$("#alertMe").live('click', function(){
alert('Working');
});
原因是该click
方法是一次性的。它在运行时将点击事件添加到该 ID。要动态处理该 id 上的点击事件,请使用on
如下:
$(".button1").click(function(){
$(".button2").attr("id", "alertMe");
});
$(document).on('click',"#alertMe", function(){
alert('Working');
});
现场示例:http: //jsfiddle.net/SWZMd/17/
设置id后也可以设置点击:
$(".button1").click(function(){
$(".button2").attr("id", "alertMe");
$("#alertMe").click(function(){
alert('Working');
});
});