2017-02-03 7 views
0

wechseln Das Problem, das ich konfrontiert ist, dass ich identische "Button-Checkboxen" habe, aber sobald sie angeklickt wird, möchte ich nur die nächste private Klasse zu ändern.Wie am nächsten Kinder Klasse

<span class="button-checkbox"> 
    <button type="button" onclick="privateClick()" class="btn btn-sm btn-default"> 
     <i class="fa fa-square-o private"></i> 
    <button> 
    <input name="private" type="checkbox" class="hidden" /> 
</span> 
<span class="button-checkbox"> 
    <button type="button" onclick="privateClick()" class="btn btn-sm btn-default"> 
     <i class="fa fa-square-o private"></i> 
    <button> 
    <input name="private" type="checkbox" class="hidden" /> 
</span> 

Ich verwende derzeit:

function privateClick() 
{ 
    $(".private").toggleClass('fa-square-o fa-check-square-o'); 
} 

die "Checkbox Button" zu wechseln. Aber wenn es mehr als ein Button-Kontrollkästchen gibt, schalten sich alle um. Also habe ich versucht mit:

var closest_tag = $(this).find('.private').first(); 
closest_tag.toggleClass('fa-square-o fa-check-square-o'); 

Leider wird die Klasse überhaupt nicht umgeschaltet.

Jede Hilfe würde sehr geschätzt werden!

+1

Attach privateClick(), um Click-Ereignis Ihre Schaltfläche und $ ändern ("privat") zu $ (this) – PersyJack

+0

Danke für den Kommentar! Das Problem ist, dass die .private-Klasse innerhalb des '' Tags ist und durch diese Änderung ändern sich die Klassen innerhalb des Tags nicht :( –

+0

Warum posten Sie keinen relevanten Teil Ihres Codes? Es ist schwer zu sagen, was Sie haben – PersyJack

Antwort

1

Sie sich von Ihrem Onclick-Ereignis befreien und nur jquery auf Ereignis verwenden, wie folgt aus:

$("button").on("click", function(){ 
 
var itag = $(this).find("i"); 
 
    itag.toggleClass('fa-square-o fa-check-square-o'); 
 
    itag.text(itag.attr("class")) 
 
})
button{ 
 
    display:block; 
 
    padding:50px 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span class="button-checkbox"> 
 
    <button type="button" id="1" data-color="white" class="btn btn-sm btn-default"> 
 
     <i class="fa fa-square-o private"></i> 
 
     </button> 
 
    <input name="private" type="checkbox" class="hidden" /> 
 
</span> 
 
<span class="button-checkbox"> 
 
    <button type="button" id="1" data-color="white" class="btn btn-sm btn-default"> 
 
     <i class="fa fa-square-o private"></i> 
 
     </button> 
 
    <input name="private" type="checkbox" class="hidden" /> 
 
</span/>

+0

Danke! Das scheint zu funktionieren, wenn die Schaltflächen zum Zeitpunkt des Ladens der Seite erstellt wurden versuchen, dieses Skript zu ändern [jQuery File Upload] (https://bluepimp.github.io/jQuery-File-Upload/) Das Problem scheint zu sein, dass jede Schaltfläche, die nach dem Laden der Seite erstellt wird, aus irgendeinem Grund erstellt wird funktioniert nicht mit diesen –

+1

Wenn Sie Schaltflächen nach dem Laden der Seite hinzufügen, dann binden Sie es an das Dokument und verwenden Sie Btn-Klasse, um es zu filtern. So $ (Dokument) .on ("click", ".btn", Funktion () {// Dein Toggle-Code Hier }); – PersyJack