我正在尝试操纵id
以使用相同的按钮执行更多2次操作。
类似于:
var id;
if(something == 2){
id = "id";
}else{
id = "id2";
}
$(".myClass").attr("id", id);
但是,它不好,因为如果我尝试使用我设置的id
,将无法工作,可能是因为该文档已经加载了按钮中没有id
。
不要认为这需要一个例子,but i made it。
有另一种方法可以做到这一点吗?
答案 0 :(得分:3)
如果你需要将动作绑定到某些 future 元素,通常最好使用委托,这意味着要监听不在元素本身上的事件,而是在他们的祖先之一上:
$("body").on("click", "#id2", function(){
alert( "Clicked!" );
});
此时,您可以动态设置ID:
$(".myClass").attr("id", function(){
return something === 2
? "id"
: "id2" ;
});
当我正在侦听身体上的点击事件时,通常最好使用更接近的父元素,这样事件在处理之前不必冒泡太多。
答案 1 :(得分:1)
使用此:
$(document).on('click', '#alertMe', function(){
alert('Working');
});
答案 2 :(得分:0)
试试这个
$("#alertMe").live("click",function(){
alert('Working');
});
答案 3 :(得分:0)
不要使用'click()'绑定处理程序,使用live:
$("#alertMe").live('click', function(){
alert('Working');
});
答案 4 :(得分:0)
原因是click
方法是一次性交易。它在运行时将click事件添加到该id。要动态处理该ID上的点击事件,请使用on
,如下所示:
$(".button1").click(function(){
$(".button2").attr("id", "alertMe");
});
$(document).on('click',"#alertMe", function(){
alert('Working');
});
答案 5 :(得分:0)
您也可以在设置ID后设置点击次数:
$(".button1").click(function(){
$(".button2").attr("id", "alertMe");
$("#alertMe").click(function(){
alert('Working');
});
});
答案 6 :(得分:0)
将第二个单击事件移动到第一个单击事件中,然后它将起作用。
$(".button1").click(function(){
$(".button2").attr("id", "alertMe");
$("#alertMe").click(function(){
alert('Working');
});
});