0

以下に示すように、jqueryを使用して、いくつかのクラスを削除して要素に追加しています

$("#"+obj.id+" div.treeclick").removeClass("ui-icon-radio-off").removeClass("tree-leaf").addClass("tree-minus").addClass("ui-icon-triangle-1-s");

クラスツリーマイナスにあるイベントをバインドしたいので、次の行を使用します

$("#"+obj.id+" div.treeclick").removeClass("ui-icon-radio-off").removeClass("tree-leaf").addClass("tree-minus").addClass("ui-icon-triangle-1-s").bind($(".tree-minus").data('events'));

しかし、「オブジェクトにはメソッド 'apply' がありません」というエラーが表示されました。$("tree-minus").data('events') から取得するイベントを追加するにはどうすればよいですか

前もって感謝します

4

1 に答える 1

0
$("#" + obj.id + " div.treeclick")
    .removeClass("ui-icon-radio-off tree-leaf")
    .addClass("tree-minus ui-icon-triangle-1-s");

$("#" + obj.id).on($(this).data('events'), 'div.treeclick', function() {

});

また

   $("#" + obj.id + " div.treeclick")
        .removeClass("ui-icon-radio-off tree-leaf")
        .addClass("tree-minus ui-icon-triangle-1-s")
        .on($(this).data('events'), 'div.treeclick', function() {
            alert('event binded');
        });

ノート

クラスごとにaddClass()and を個別に呼び出す必要はなく、カンマ区切りの値を使用するだけです。removeClass()

.on()delegate イベントが必要な理由

要素のクラスを変更すると、新しい要素として扱われ、以前は DOM に存在しないため、デリゲート イベントが必要です。


あなたのコメントによると

$("#" + obj.id + " div.treeclick")
    .removeClass("ui-icon-radio-off tree-leaf")
    .addClass("tree-minus ui-icon-triangle-1-s");

$("#" + obj.id).on($('.tree-minus').data('events'), '.tree-minus.ui-icon-triangle-1-s', function() {

});
​
于 2012-06-07T06:50:23.363 に答える