Ich habe eine jquery .live("click") -Funktion für ein Bild beim Klicken, auf das ein Textfeld bearbeitet werden kann.

Wenn ich jetzt auf eine Schaltfläche klicke (z. B. überprüfen), möchte ich den Live-Klick des Bildes deaktivieren.

Ich möchte das Bild nicht verbergen.

Ich habe versucht einzustellen

$("#contact_no_edit_img, #email_edit_img")
    .attr("disabled", "disabled")
    .css("opacity","0.5");

Trotzdem funktioniert der Live-Klick für dieses Bild

Gibt es eine andere Möglichkeit, als das Bild auszublenden oder eine temporäre Variable zu verwenden, um Live-Klicks zu erkennen und zuzulassen ?!

Hinweis: Ich möchte das nicht in .on ändern, da wir das gesamte Projekt neu codieren müssten !!

1
Vignesh Subramanian 27 Nov. 2013 im 17:16

5 Antworten

Beste Antwort

Eigentlich sollten Sie die Funktion .live () nicht mehr verwenden. Stattdessen sollten Sie .on("click") und .off("click") verwenden. Sie sollten die jQuery-Dokumente dazu sehen: http://api.jquery.com/off/

8
Svenisok 27 Nov. 2013 im 13:23

Kann Selektor für Live ändern?

$("#contact_no_edit_img:not([disabled=disabled])").live('click', function(){});

Es werden nur Elemente ausgeführt, die nicht deaktiviert sind = "deaktiviert"

1
hm_ngr 27 Nov. 2013 im 13:53

Verwenden Sie die jquery, um das Klickereignis zu deaktivieren

 $( "p" ).live( "click", callback function );

// Now foo will no longer be called
$( "p" ).die( "click", callback function );
0
AAA 27 Nov. 2013 im 13:20

Mit die() können Sie einen mit live() festgelegten Handler entfernen.

Es ist jedoch erwähnenswert, dass live und die zugehörigen Funktionen seit jQuery 1.7 veraltet sind. Sie sollten on wirklich mit einem Delegaten-Selektor verwenden.

2
Rory McCrossan 27 Nov. 2013 im 13:18

Sie sollten sich .off() ansehen (das Äquivalent für .unbind(), das für dynamisch erstellte Elemente funktioniert). .die() wurde veraltet und entfernt oder sogar .one(), was auf einen einzelnen Ereignisauslöser pro gebundenem Element beschränkt ist.

1
DevlshOne 27 Nov. 2013 im 13:23