Pregunta

Muy pocas palabras:. currentItem.toggleClass('open'); la línea no parece que el trabajo

Más precisamente, al inspeccionar los resultados con Firebug, puedo ver la clase intermitente "abierta" (que aparece y desaparece de inmediato) en el elemento relevante. Así es como la función que se activa realmente dos veces (por supuesto, sólo haga clic una vez).

Puede alguien explicar por qué es y cómo prevenirlo?

Aquí está mi código jQuery:

$('div.collapse ul.radio_list li input[type=radio]').click(function (event) {

    var currentTree = $(this).parent().parent().parent();
    var currentItem = $(this).parent().parent();
    var currentGroup = currentItem.attr('rel');

    $(this).parents('ul').children('li').removeClass('select');
    if ($(this).is(':checked')) {
        currentItem.addClass('select');
    }

    currentItem.toggleClass('open');

    var currentLevel = 0;
    if (currentItem.is('.level1')) {currentLevel = 1;}
    if (currentItem.is('.level2')) {currentLevel = 2;}
    if (currentItem.is('.level3')) {currentLevel = 3;}
    var nextLevel = currentLevel + 1;

    currentTree.children('li').filter('li[rel ^=' + currentGroup + '].level' + nextLevel).animate({'height': 'show', 'opacity': 'show'}, 250).addClass('currentChild');
});

Y aquí es una parte de mi código HTML, ligeramente simplificada para facilitar la lectura (no muy bonita lo sé, pero tengo solamente un control limitado sobre la salida HTML):

<div class="col_left collapse">
    <ul class="radio_list" rel="7">
        <li class="onglet level0" rel="group1">
            <span class="onglet level0">
                <input type="radio" />
                    <label>Services Pratiques</label></span>
            <input type="hidden" value="1">
        </li>

Gracias de antemano.

¿Fue útil?

Solución

Problema resuelto: el archivo JS en realidad estaba incluido dos veces en la cabeza de HTML, lo que provocó la función que se activa dos veces con cada clic

.

Otros consejos

Yo tenía un problema similar en mi sitio, y me encontré con que había duplicado accidentalmente el toggleclass conectar todo el camino en la parte inferior, al jugar por primera vez alrededor de la misma. ¡Huy! Asegúrese de buscar para las llamadas dobles!

Yo tenía un problema similar de hacer esto:

html:

<a>JS-link</a>

JS:

$('a').click(function(event) {
    ... my stuff ...
    # Forgot to do event.preventDefault(); !!
}

Resultados de clics siendo registro dos veces!

Yo tenía el mismo problema y se dio cuenta que había obligado accidentalmente la función dos veces. Había pensado originalmente para mover el código de un archivo JavaScript a otro pero accidentalmente dejó el original en su lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top