$(‘body’).on(‘click’, ‘.anything’, function(){})

Lesezeit: 4 Minuten

Benutzeravatar von fancy
schick

$('body').on('click', '.anything', function() {
    //code
});

funktioniert im Moment für nichts und ich kann nicht herausfinden, warum. Ich bin in der Lage, mich an irgendetwas anderem zu verankern, sagen wir, ich werfe einfach ein #wrap div direkt in der body. Dann bin ich in der Lage zu tun

$('#wrap').on('click', '.anything', function() {
    //code
});

für jedes Element, das ich will.

Irgendeine Idee, was ich hätte tun können, um diese Fähigkeit für das Körperelement zu deaktivieren?

Vielen Dank!

  • hast du eine event.stopPropagation() oder return false in einem Click-Handler zwischen dem Element, auf das Sie klicken, und dem body Element?

    – David Thomas

    12. August 2012 um 10:21 Uhr

  • Ich kann es nicht reproduzieren. Könnten Sie eine einrichten jsfiddle.net Demo? Auf Ihrer Seite muss etwas passieren, das nicht in der Frage enthalten ist.

    – pimvdb

    12. August 2012 um 10:45 Uhr


  • Wollen Sie also einige Funktionen im Zusammenhang mit dem Click-Ereignis im Text für einige

    oder etwas darin nicht anwendbar / nicht verfügbar machen?

    – Alfred

    12. August 2012 um 10:54 Uhr

  • @pimvdb weiß, dass es nicht reproduzierbar ist. Benötigen Sie Hilfe, um herauszufinden, wo Sie suchen müssen, Teil einer größeren Codebasis.

    – schick

    12. August 2012 um 10:58 Uhr

  • Versuchen Sie zu ersetzen body im Selektor mit html oder document (ohne Anführungszeichen) und sehen, ob das das Problem löst?

    – adeneo

    12. August 2012 um 12:00 Uhr

Benutzeravatar von Syed Arif Iqbal
Syed Arif Iqbal

Du solltest benutzen $(document). Es ist ein Funktionsauslöser für jedes Klickereignis im Dokument. Dann können Sie drinnen die jquery verwenden on("click","body *",somefunction), wobei das zweite Argument angibt, auf welches spezifische Element abgezielt werden soll. In diesem Fall jedes Element innerhalb des Körpers.

$(document).on('click','body *',function(){
    //  $(this) = your current element that clicked.
    // additional code
});

  • Bitte erwägen Sie, Ihren Beitrag zu bearbeiten, um weitere Erläuterungen dazu hinzuzufügen, was Ihr Code tut und warum er das Problem lösen wird. Eine Antwort, die meistens nur Code enthält (auch wenn es funktioniert), hilft dem OP normalerweise nicht, sein Problem zu verstehen. Es wird auch empfohlen, keine Antwort zu posten, wenn es sich nur um eine Vermutung handelt. Eine gute Antwort wird einen plausiblen Grund dafür haben, warum sie das Problem des OP lösen könnte.

    – SuperBiasedMan

    18. August 2015 um 8:56 Uhr

  • @SuperBiasedMan danke, dass du mich richtig gestellt hast. Ich erkläre nicht viel, weil ich kein englischer Muttersprachler bin und mein Englisch nicht gut ist. aber ich habe mein bestes versucht.

    – Syed Arif Iqbal

    18. August 2015 um 9:09 Uhr

  • Ich verstehe, ich habe das Englisch in Ihrem Beitrag bearbeitet, um es jetzt etwas klarer zu machen. Im Allgemeinen werden die Leute Posts bearbeiten, um sie so zu verbessern, also ermutige ich Sie, den Code zu erklären, selbst wenn Sie sich Sorgen um die Qualität Ihres Englisches machen.

    – SuperBiasedMan

    18. August 2015 um 9:27 Uhr

  • Vielen Dank @SuperBiasedMan

    – Syed Arif Iqbal

    18. August 2015 um 9:29 Uhr

Sie können dies versuchen:

Sie müssen das folgende Format einhalten

    $('element,id,class').on('click', function(){....});

*JQuery-Code*

    $('body').addClass('.anything').on('click', function(){
      //do some code here i.e
      alert("ok");
    });

  • @fancy scheint vergessen zu haben, auf deine Frage zu antworten. Bitte schauen Sie sich meine Lösung genau an. Es kann mir hilfreich sein.

    – Codegiant

    8. Januar 2013 um 6:08 Uhr

Benutzeravatar von Lemex
Lemex

Wenn Sie aufnehmen möchten, klicken Sie auf alles und tun Sie es dann

$("*").click(function(){
//code here
}

Ich verwende dies für den Selektor: http://api.jquery.com/all-selector/

Dies wird für die Handhabung von Klicks verwendet: http://api.jquery.com/click/

Und dann verwenden http://api.jquery.com/event.preventDefault/

Um normale Klickaktionen zu stoppen.

  • Dadurch wird jedem Element im DOM ein Handler hinzugefügt, was den Browser stark belastet.

    – Joseph

    12. August 2012 um 11:31 Uhr

  • Zusätzlich zu dem, was Joseph gesagt hat, würde der Beispielcode in der Frage (wenn nicht das mysteriöse Problem wäre) den Handler nur aufrufen, wenn das angeklickte Element mit dem übereinstimmt '.anything' Wähler. In Bezug auf Ihren Kommentar “und mobil wurde nicht gesagt”, wenn es sich um eine öffentliche Website handelt, wird von mobilen Geräten aus darauf zugegriffen – das OP sollte dies nicht explizit angeben müssen.

    – nnnnn

    12. August 2012 um 11:32 Uhr


  • Außerdem, wenn ein Element 10 Ebenen tief ist, da dieser Code angehängt ist alle Elemente, es feuert 10 mal – eins für das Element und 9 für seine Eltern?

    – Joseph

    12. August 2012 um 13:09 Uhr


1431430cookie-check$(‘body’).on(‘click’, ‘.anything’, function(){})

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy