evento.stopPropagation() non funziona in chrome con jQuery 1.7

Per qualche ragione, cliccando il documento non funziona in Chrome (il closeQuickView non viene chiamata).

Gli elementi vengono caricati tramite AJAX e quindi hanno bisogno di avere .su() per azione (in precedenza .live() è deprecato in jQuery 1.7)

Usato l’esempio qui: Come faccio a rilevare un clic al di fuori di un elemento? come base

$('html').on('click', '.poster:not(.active) .image-effect', function (event) {

        var obj = $(this).parent();

        //If there are no .close spans
        if (obj.find('.close').length === 0) {

            //Add the close element by javascript to remain semantic
            obj.find('.quick-view').append('<span class="close">&times;</span>');
        }

        //Close any open Quick Views
        closeQuickView();

        //Add the active class (controls opacity)
        obj.addClass('active');

        //Fade in the Quick View
        obj.find('.quick-view').fadeIn(200, 'easeInOutQuint');

        event.preventDefault();
        event.stopPropagation();

    });

    $('html').on('click', '.active', function () {
        return false;
    });

    $('html').on('click', '.close', function () {
        closeQuickView();
    });

    $('html').on('click', '.quick-view', function (event) {
        event.stopPropagation();
    });

    //Close the QuickView with a button
    $('html').on('click', function () {
        closeQuickView();
    });

    function closeQuickView() {
        $('.poster').removeClass('active');
        $('.quick-view').fadeOut(200, 'easeInOutQuint');
    }

Mio markup è come segue:

<figure class="grid_2 box poster">
    <a class="image-effect" href="#">
        <img class="colour" src="path/to/image" />
        <img class="bw" src="path/to/image" />
    </a>
    <div class="quick-view">

        Content

    </div>
</figure>
Le cifre sono avvolti in un #contenuto del div che è il soggetto del carico AJAX. Ho aggiunto un inner wrapper div, cancellato la cache e sembra funzionare ora :S

OriginaleL’autore Craig | 2011-11-05

2 Replies
  1. 7

    Provare event.stopImmediatePropagation

    Consultare la documentazione

    Grazie, non sapevo che. Su quale evento devo usare? In entrambi i casi? Io sperimentare.
    grazie uomo.. stoppropagation non faceva per me.. questa cosa funziona bene.. grazie ancora

    OriginaleL’autore Sam

  2. 0

    jquery 1.6.4 soffrire lo stesso bug. Risolto utilizzando stopImmediatePropagation.

    OriginaleL’autore giop

Lascia un commento