Wenn Sie ein Click-Ereignis an einen Link binden, müssen Sie die Click-Handler-Funktion einschließen.
$(this).bind('click');
tut nichts, weil es keine Handler-Funktion gibt. Sie müssten die Click-Handler-Funktion erneut übergeben, wenn Sie sie erneut binden möchten. Sie können dies tun, indem Sie den Click-Handler in seine eigene lokale Funktion aufbrechen und diese Funktion dann jedes Mal verwenden, wenn Sie das click-Ereignis binden. Könnte man so tun, wie folgt:
function bindA1(force) {
var a1 = $('.a1');
if (force || a1.hasClass("disabled")) {
a1.click(function() {
$(this)
.addClass("disabled")
.unbind("click")
.animate({"top": "+=50px"}, "slow");
return(false);
}).removeClass("disabled");
}
}
bindA1(true);
$('.a2').click(function() {
bindA1();
return(false);
});
Arbeiten Demo hier: http://jsfiddle.net/jfriend00/3kjaR/
Wenn Sie wirklich beabsichtigen, die Handler für Links wie diese zu aktivieren und zu deaktivieren, kann es einfacher sein, nur eine Eigenschaft, die Sie überprüfen anstatt die Event-Handler tatsächlich zu entfernen.
Sie könnten ein Flag wie folgt verwenden:
$('.a1').click(function(){
if (!$(this).data("disabled")) {
$('.a1').animate({"top": "+=50px"}, "slow");
$(this).data("disabled", true);
}
});
$('.a2').click(function(){
$(".a1").data("disabled", false);
});
Arbeiten Demo hier: http://jsfiddle.net/jfriend00/NSZ8P/
ich denke, das man einfach zu bedienen ist. Ich wähle u jfriend00 – test