2

我正在尝试操纵一个id使用相同的按钮来执行超过 2 个操作。

它类似于:

var id;
if(something == 2){
   id = "id";
}else{
   id = "id2";
}

$(".myClass").attr("id", id);

但是,它不好,因为如果我尝试使用id我设置的,将无法正常工作,可能是因为文档已经加载,id按钮中没有。

不认为这需要一个例子,但我做到了

还有另一种方法吗?

4

7 回答 7

3

如果您需要将操作绑定到某个未来元素,通常最好使用委托,这意味着不是在元素本身上而是在其祖先之一上监听事件:

$("body").on("click", "#id2", function(){
    alert( "Clicked!" );
});

此时,您可以动态设置 ID:

$(".myClass").attr("id", function(){
    return something === 2
        ? "id" 
        : "id2" ;
});

当我在 body 上监听 click 事件时,通常最好使用更接近的父元素,这样事件在处理之前不必冒太多气泡。

于 2012-05-24T14:12:28.530 回答
1

用这个:

$(document).on('click', '#alertMe', function(){
   alert('Working'); 
});
于 2012-05-24T14:11:55.353 回答
0

将第二次点击事件移动到第一次点击事件中,然后它将起作用。

$(".button1").click(function(){
   $(".button2").attr("id", "alertMe");
   $("#alertMe").click(function(){
   alert('Working'); 
   });
});

http://jsfiddle.net/dcai/SWZMd/18/

于 2012-05-24T14:14:07.520 回答
0

像这样试试

$("#alertMe").live("click",function(){
   alert('Working'); 
});
于 2012-05-24T14:12:17.777 回答
0

不要使用 'click()' 绑定处理程序,使用 live:

$("#alertMe").live('click', function(){
   alert('Working'); 
});
于 2012-05-24T14:12:27.343 回答
0

原因是该click方法是一次性的。它在运行时将点击事件添加到该 ID。要动态处理该 id 上的点击事件,请使用on如下:

$(".button1").click(function(){
    $(".button2").attr("id", "alertMe");
});

$(document).on('click',"#alertMe", function(){
   alert('Working');
});

现场示例:http: //jsfiddle.net/SWZMd/17/

于 2012-05-24T14:13:02.540 回答
0

设置id后也可以设置点击:

$(".button1").click(function(){
    $(".button2").attr("id", "alertMe");
    $("#alertMe").click(function(){
      alert('Working'); 
    });

});
于 2012-05-24T14:13:08.573 回答