1

関数の実行中にボタンのIDを変更するにはどうすればよいですか?

私はもう試した:

$('#follow').attr('id','unfollow'); 

しかし、$("#unfollow").click(function(){関数を実行しようとすると運が悪くなります。

これどうやってするの?

アップデート

$(function() { 

  $("#follow").click(function(){ 
    $('#follow').attr('id','unfollow'); 
    alert("follow");
    });

  $(document).on('click', '#unfollow', function() {
    $('#unfollow').attr('id','follow'); 
    alert("unfollow"); 
    });

});
4

4 に答える 4

11

作成したコードは機能するはずですが、id属性を変更した後にクリックイベントをバインドしていますか?

そうでない場合は、on代わりに使用してクリックイベントをバインドします。

$(document).on('click', '#unfollow', function() { ... });

ところで:

要素のIDを変更することは良い習慣ではないと思います。IDはページ上で一意である必要があります。

要素クラスを変更する( addClassメソッドとremoveClassメソッドを使用する)か、要素にデータを追加する(dataメソッドを使用する)ことでこれを行わないのはなぜですか?

アップデート

このようなものを試してください:

$(document).on('click', '.follow', function() {
    alert('follow');
    $(this).removeClass('follow').addClass('unfollow');
});
$(document).on('click', '.unfollow', function() {
    alert('unfollow');
    $(this).removeClass('unfollow').addClass('follow');
});

** idの代わりにclass'を使用するセレクターをどのように使用したかに注意してください。そのため、要素に適切なクラスを指定する必要があります(初期状態のフォロー/フォロー解除)

于 2012-04-30T18:14:50.130 に答える
1

まだ存在しない要素にイベントをアタッチするには、$。liveを使用する必要があります

$("#unfollow").live('click', function(){
于 2012-04-30T18:15:34.153 に答える
1
$('#follow').attr('id','unfollow'); 

変更id後:

最初にこれを試してください:

$("#unfollow").click(function(){

});

それ以外の場合はライブイベント:

$('body').on('click', '#unfollow', function(){

});

注: live()非推奨です。したがって、本当にライブイベントが必要な場合は、2番目のイベントのように試してください。ユーザーjQuery 1.7.x

于 2012-04-30T18:15:40.283 に答える
1

問題は、その時点で要素が存在する場合に$("#unfollow").click(function(){のみ要素にバインドすることです。$("#unfollow")IDを変更する前に、クリックイベントを他の場所でバインドしていると思います。

次のように、ライブイベントにすることができます。

$(document).on('click', '#unfollow', function(){

注:代わりにdocument、のより近い親要素を使用する必要があります#unfollow。要素が削除された場合は、その要素がDOMに残っていることを確認してください。イベントも同様です。

$("#unfollow").click(function(){または、 IDを変更した後、(を使用して)イベントを再バインドできます。

$('#follow').attr('id','unfollow');
$("#unfollow").click(function(){
于 2012-04-30T18:16:30.010 に答える