jQuery Ankreuzfelder in Safari
Frage
Ich versuche, eine Klasse hinzuzufügen, wenn eine Checkbox in Safari „geprüft“ und entfernen Sie es, wenn es nicht aktiviert ist [in anderen Browsern Ich bin using.bind ( „focus“, function () {aber in Safari funktioniert es nicht ?]
Ich bin derzeit mit
jQuery('.top_class input').bind("focus", function(){
jQuery(this).parents('.row').addClass("add_over");
})
.bind("blur", function() {
jQuery(this).parents('.row').removeClass("add_over");
});
Dies funktioniert nicht in Safari - wie Sie den Code bekommen in Safari arbeiten
Lösung
Wenn Sie mit einem traditionellen input[type=checkbox]
arbeiten dann denke ich, Sie für das Click-Ereignis suchen, so etwas wie folgt aus:
jQuery('.top_class').click(function(){
jQuery(this).closest('.row').toggleClass("add_over", jQuery(this).is(':checked') );
});
klar zu sein, wird dies funktionieren, wenn dies Ihr Checkbox HTML ist (mehr oder weniger):
<input type="checkbox" class="top_class" name="whatever" />
UPDATE : Safari kann oder akzeptieren kann nicht focus
auf einer Checkbox auf Einstellungen abhängig. Da es keine Möglichkeit gibt, dies zu testen, würde ich es auf diese Weise behandeln:
var $rows = jQuery('.row'); // Cache all rows
jQuery('.top_class').click(function(){
var $row = jQuery(this).closest('.row');
$rows.filter(".add_over").not($row).removeClass("add_over"); // Remove class from other rows
$row.addClass('add_over');
});
Das sollte das tun, was Sie wollen. Sie können eine Demo davon sehen in Safari arbeiten hier: http://jsbin.com/ohuxe/
Andere Tipps
Haben Sie versucht, mit .bind ( „Klick“) und das Attribut checked prüft?
jQuery("input.top_class").bind(
"click",
function() { alert(jQuery(this).attr("checked")) }
)