jQuery: имеет ли `.off ()` те же ограничения, что и .die () ` - PullRequest
2 голосов
/ 08 ноября 2011

Я вижу в документации для .die() это говорит следующее:

Для правильной работы .die () селектор, используемый с ним, должен точно соответствовать селектору, изначально использовавшемуся.live ().

Имеет ли новый метод в jQuery 1.7 такое же ограничение *?

* на самом деле не уверен, считается ли это ограничением или функцией

Ответы [ 2 ]

4 голосов
/ 08 ноября 2011

Ограничение на самом деле все еще там.

Ограничение с живой демонстрацией

$(".bind").click(function(){
    $(".clone").live("click",function(){
        $(this).clone().insertAfter(this);
    });
});

$(".unbind").click(function(){
    $(".clone,.somethingelse").die("click");
});

работает над демо

$(".bind").click(function(){
    $("body").on("click",".clone",function(){
        $(this).clone().insertAfter(this);
    });
});

$(".unbind").click(function(){
    $("body").off("click",".clone");
});

Ограничение на демо

$(".bind").click(function(){
    $("body").on("click",".clone",function(){
        $(this).clone().insertAfter(this);
    });
});

$(".unbind").click(function(){
    $("body").off("click",".clone,.somethingelse");
});

Как видите, вам нужно будет указать тот же селектор, что и в live.

0 голосов
/ 08 ноября 2011

Да и нет. Вызов .off должен будет имитировать синтаксис .live, однако аргумент селектора не требуется. Вызов .off () для всех событий нажатия на конкретном элементе приведет к отмене привязки всех событий нажатия, в том числе делегированных. Если вы хотите удалить только определенное делегированное событие или только делегированные события, вам все равно потребуется предоставить селектор для этого делегированного события, или все другие события также будут удалены.

...