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

War es hilfreich?

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")) }
     ) 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top