2016-07-14 13 views
-2

Mein Ziel ist es, das vorherige oder nächste div nach dem Klicken auf ein li-Element zu verbergen.jQuery: HIde prev und next div nach einem Klick-Ereignis

Dies ist das Skript:

jQuery('.menu-ul li').on('click',function(){ 

    var current_id = jQuery(this).data('id'); 
    var menu_id = '#' + current_id; 

    jQuery(menu_id).next("div").attr("id").hide() 
    jQuery(menu_id).prev("div").attr("id").hide(); 


}); 

Das Skript oben funktioniert gut, aber wenn ich die Funktion verbergen put() ich diesen Fehler:

Uncaught TypeError: jQuery(...).next(...).attr(...).hide is not a function 

Wie kann ich es lösen ? folgender Code

+1

'attr' gibt entweder einen String oder' undefined'. Diese Werte haben keine Versteckmethode. – undefined

+2

Lesen Sie die Dokumentation, die diese Methoden zurückgeben. –

+0

Ich bin mir nicht sicher, aber ... versuchen Sie das Entfernen der 'attr (" id ")' – Neoares

Antwort

-2

Versuch,

jQuery('.menu-ul li').on('click',function(){ 

    var current_id = jQuery(this).data('id'); 
    var menu_id = '#' + current_id; 

    jQuery(menu_id).next("div").hide() 
    jQuery(menu_id).prev("div").hide(); 


}); 
+0

Dies ist keine "free code snippets" -Website, es ist eine Q & A-Website; Bitte erläutern Sie, was Sie getan haben, um das Problem von OP zu beheben, anstatt nur "folgenden Code zu versuchen". – ndugger

+0

Sie sollten niemals jQuery gedankenlos anrufen. 'jQuery (this)' gibt Ihnen das Objekt, das Sie benötigen, und Sie können es zwischenspeichern. Anderen Code zu reparieren ist gut, aber sie falsch zu schieben ist schlecht. – ShrekOverflow

+0

@dugger Danke Kumpel für Ihren Vorschlag. Ich bin neu hier. Notierte sie unten, um das zu beachten :) –

0

Um ge das vorherige Element $(selector).prev() verwenden, und die nächste Verwendung $(selector).next() zu bekommen. Verwenden Sie dann , um eines oder beide zu verbergen.

So:

jQuery('.menu-ul li').on('click',function(){ 

    var current_id = jQuery(this).data('id'); 

    // We get the element and store it, so we don't get it twice later. 
    var element = jQuery('#' + current_id); 

    element.prev().hide(); 
    element.next().hide(); 
}); 
Verwandte Themen