Ich habe eine Seite, auf der ich Inhalte dynamisch lade. Innerhalb des $(document).ready habe ich ähnliche Ereignishandler:

$(document).on("click", ".content_button", function(e){
    e.preventDefault();
    e.stopPropagation();
    // content
});

Das Problem ist, dass der Mausklick nur bei etwa 90% der Klicks erkannt wird. Es scheint völlig zufällig. Zu anderen Zeiten muss ich den gleichen Knopf 4-5 mal drücken, und dann funktioniert es. Ich habe keinen Fehler in der Konsole, auch der CSS-Teil funktioniert jedes Mal:

div.content_button:active {
    top: 2px;
}

Ich kann anscheinend keine Lösung finden. Ich benutze jQuery 1.11, es funktioniert so unter Win10, Win7, in Firefox und sogar auf iPad oder Android.

Haben Sie Ideen, was das Problem sein kann?

Bearbeiten :

data.control enthält die .content_button Divs (Schaltflächen) in HTML.

Und hier ist der Teil, der die Tasten lädt:

    $.ajax({
        url:    'worker.php',
        async:  false,
        cache:  false,
        type:   "POST",
        data:   {   action:"update"   },
        dataType: "json",
        success:function(data) {
                    if(data.actionresult == 1)
                    {
                        $('div#container').hide("slide", { direction: "down" }, 500);
                        $('div#container').promise().done(function() {
                            $('div#container').html(data.control);
                            $('div#container').show();
                        });                    
                    }
                    else
                    {
                        // handle error
                    }
                }
    });
1
ZTefter 15 Aug. 2015 im 09:07

3 Antworten

Beste Antwort

Ok, ich habe das Problem gefunden, es ist das:

div.content_button:active {
    top: 2px;
}

Bei mouseDown werden 2 Pixel verschoben, sodass der Link nach einem mouseUp möglicherweise nicht mehr vorhanden ist. Technisch gesehen wird das Klickereignis also nicht ausgelöst, wenn das mouseUp über einem anderen Element ausgeführt wird.

Ich hoffe das wird anderen helfen.

0
ZTefter 11 Apr. 2016 im 17:53

Hast du es mit versucht?

$(function() {

   var count = 0;

   $('body').on('click', '.content_button', function() {
       count++;
       $('#count').html(count);
   });

});

https://jsfiddle.net/byexstpq/

0
Mik 15 Aug. 2015 im 07:44
$(document).ready(function(){
$(".content_button").on("click",  function(e){
    e.preventDefault();
    e.stopPropagation();
    // content
});
});

Es muss so gemacht werden.

0
hemnath mouli 15 Aug. 2015 im 06:10