2

id同じボタンを使用して2つ以上のアクションを実行するように操作しようとしています。

そのようなもの:

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

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

しかし、それは良くありません。なぜなら、id私が設定したものを使おうとすると、おそらくドキュメントがidボタンに何も入っていない状態ですでにロードされているために、機能しないからです。

これには例が必要だとは思わないが、私はそれを作った

これを行う別の方法がありますか?

4

7 に答える 7

3

アクションを将来の要素にバインドする必要がある場合は、通常、委任を使用するのが最善です。つまり、要素自体ではなく、その祖先の1つでイベントをリッスンすることを意味します。

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

この時点で、IDを動的に設定できます。

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

ボディのクリックイベントをリッスンしている間は、イベントが処理される前にあまりバブルする必要がないように、通常はより近い親要素を使用するのが最善です。

于 2012-05-24T14:12:28.530 に答える
1

これを使って:

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

このようにしてみてください

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

'click()'を使用してハンドラーをバインドしないでください。ライブを使用してください。

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

その理由は、このclick方法が1回限りの取引であるためです。実行時にその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 に答える
0

2番目のクリックイベントを最初のクリックイベントに移動すると、機能します。

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

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

于 2012-05-24T14:14:07.520 に答える