0

クラスを介して要素にバインドされているすべてのクリックをバインド解除したい

要素は次のとおりです。

<i  class="icon-edit edit <%=AgentData.isSortiDeService(agent)%>" alt="<%=noteEchelle.getIdNote()%>"></i> //where isSortieDeService is a java method which returns a 

string 、この文字列の値は '' または 'isSortiDeService' の場合があります

このような要素には、次のようにバインドされたクリックがいくつかある場合があります。

//******************modifier la notation
       $(".edit").live("click",function(){ 
        var idNote = $(this).attr("alt");
         $("#divBody").empty();
         $("#divBody").load("<%=path%>/situationAdministrative/notation/editNote.jsp",{idNote:idNote});
         $("#divTitle").empty();
         $("#divTitle").append('Modifier la note');
         $("#div").css('width','650px');
         $("#div").modal({ dynamic: true });
          });

だから私はこれを試しました

       $(".isSortiDeService").die('click').unbind("click").off("click").click(function(){
   alert("Cet agent n'est plus en service. Vous ne pouvez plus effectuer cette opération");
    });
  });

同じ要素であっても別のクラスにバインドされているため、クリックはバインドされません。

だから私は別の解決策を試しました

  $('*').each(function(){
       if($(this).hasClass("isSortiDeService"))
       { $(this).die('click').unbind("click").off("click").click(function(){
       alert("Cet agent n'est plus en service. Vous ne pouvez plus effectuer cette opération");
        });

       }});

これも機能せず、クリックが発生します

私はこのように問題を表現します:私は複数のクラスを持つ要素を持っています、私の要素が特定のクラスを持っている場合、私は他のクラスにバインドされているすべてのクリックをアンバインドしたいのですが、どうやら同じセレクターに対してアンバインドまたはオフまたはダイが機能します:そう同じクラス

なにか提案を?

4

5 に答える 5

4

クリックされた項目に特定のクラスがある場合は、以下のコードを使用します。

$(document).on('click', function (e) {
 if($(this).hasClass('class')) {
  e.preventDefault();
  e.stopImmediatePropagation();
 }
});
于 2013-06-06T11:48:49.540 に答える
1

jquery 1.7 の時点で、の使用は.live推奨されていないため、おそらくもう使用しないでください: http://api.jquery.com/live/

.clickの代わりに を使用してクリック イベントをバインドする場合.live、要素にはイベントがバインドされている必要があり、これをアンバインドできます。

于 2013-06-06T11:35:07.327 に答える
1

さて、これは回避策のようです:

http://jsfiddle.net/cnu4u/

<div class="test test2"></div>

{ .on() で使用される委譲についてはこちら }

$(document).on('click','.test2',$.noop);
var arrClass = $('.test').attr('class').split(' ');
$.each(arrClass,function(i){
    $(document).off('click','.'+arrClass[i]);
});
console.log($._data(document,'events').click);
于 2013-06-06T11:36:22.880 に答える
1

だけ試しましたか

このような要素からすべてのイベント ハンドラを削除しますか?

$(".isSortiDeService").off();
于 2013-06-06T11:22:06.950 に答える