2016-07-24 20 views
0

Ich versuche, FontAwesome für Checkbox zu verwenden - so im unmarkierten Zustand - es wird Trash Symbol angezeigt, und im aktivierten Zustand wird es das gleiche Symbol, aber in roter Farbe anzeigen.FontAwesome für Kontrollkästchen

Ich habe die Schriftart-awesome.min.css und die Schriftarten hinzugefügt.

HTML:

<div class="delete-checkbox"> 
    <input type="checkbox" id="checkbox-delete-6053923167078"> 
    <span></span> 
</div> 

CSS:

.delete-checkbox input[type="checkbox"] { 
    display: none; 
} 

.delete-checkbox span:before { 
    font-family: "FontAwesome"; 
    font-style: normal; 
    width: 1em; 
    height: 1em; 
    content: '\f014'; 
    margin-right: .3em; 
} 

.delete-checkbox input[type="checkbox"]:checked ~ span:before { 
    color: red; 
} 

ich im Ergebnis jedoch das Papierkorb-Symbol sehen Sie, es nicht anklickbar ist und wenn ich darauf klicke, es dreht sich nicht rot .

Wie kann ich es tun?

+0

Sie verwenden "display: none", das im Wesentlichen das Element aus dem Dom entfernt. –

+0

korrekt, weil ich nicht die regelmäßige Checkbox wollen – Dejell

+1

Es ist überhaupt nicht klar von Ihrer Frage, oder die Antwort, die Sie als richtig markieren, warum Sie jQuery für diese benötigen - die HTML/CSS-Version funktioniert perfekt auf der Grundlage Ihrer Frage. – Toby

Antwort

2

Versuchen Sie folgendes:

http://jsbin.com/sanoya/edit?html,css,output

Das Problem, das ist, wenn Sie verwenden display: none; Sie sind im Wesentlichen das Element aus dem DOM entfernt, und das Element ist daher nicht anklickbar.

+0

Ich möchte nicht die reguläre Checkbox haben - Ich möchte das Bild als Kontrollkästchen verwenden – Dejell

+0

Was ist los mit der Jsbin, die ich gepostet habe? Es wird nur das Papierkorbsymbol angezeigt, und wenn die Eingabe aktiviert ist, wird das Symbol rot angezeigt. – Toby

+0

zeigt es nicht das Papierkorbsymbol - ich verwende Chrom - es zeigt ein schwarzes Rechteck. Wenn ich darauf klicke, wird es rot, aber das Bild wird nicht angezeigt – Dejell

1

Sie JavaScript verwenden, wenn Sie

wie

Ersetzen Sie Ihre <span></span> mit den folgenden:

<span onclick="document.getElementById('checkbox-delete-6053923167078').checked = !document.getElementById('checkbox-delete-6053923167078').checked"></span> 

Oder, wenn Sie jQuery verwenden, können Sie diese verwenden:

<span onclick="$('#checkbox-delete-6053923167078').prop('checked', !$('#checkbox-delete-6053923167078').prop('checked'));"></span> 
+0

Danke. Das ist die richtige Antwort. Ich werde ankreuzen, wenn ich in wenigen Augenblicken kann! – Dejell

+0

Gerade hinzugefügt auch nicht-jquery Version :) – Delosdos

+0

Wer nicht jQuery verwendet? :) natürlich verwende ich – Dejell

1

Es gibt Sie müssen JavaScript nicht verwenden, um das zu erreichen, wonach Sie suchen. Ihr Markup war fast in Ordnung. Sie sollten ein <label> Tag anstelle eines <span> Tags verwenden und außerdem sollten Sie <label> in Ihrem CSS verwenden. Dadurch würden Sie am Ende mit einem Markup wie diese

<div class="delete-checkbox"> 
    <input type="checkbox" id="checkbox-delete-6053923167078"> 
    <label for="checkbox-delete-6053923167078"></label> 
</div> 

und mit CSS wie diese

.delete-checkbox input[type="checkbox"] { 
    display: none; 
} 

.delete-checkbox label:before { 
    font-family: "FontAwesome"; 
    font-style: normal; 
    width: 1em; 
    height: 1em; 
    content: '\f014'; 
    margin-right: .3em; 
} 

.delete-checkbox input[type="checkbox"]:checked ~ label:before { 
    color: red; 
} 

haben Wie Sie sehen können, habe ich geändert nur Ihre <span> mit dem <label>-Tag.

Damit sind Sie völlig in der Lage zu tun, was Sie suchen, ohne zu verwenden und JavaScript-Code.

Fiddle

+0

kann ich die Beschriftung entfernen, wenn ich nichts neben der Checkbox schreiben muss? – Dejell

+1

Das Label bietet die Möglichkeit, ein Kontrollkästchen zu aktivieren. Da Sie die Checkbox selbst anzeigen, benötigen Sie ein Sonting, um einen Klick auszulösen. In diesem Fall ist das Etikett selbst leer und erhält seinen Inhalt durch CSS. Wenn Sie das Label entfernen, müssen Sie das Kontrollkästchen selbst anzeigen. – Aer0