0

Safariでチェックボックスが「チェック」されているときにクラスを追加し、チェックされていないときにクラスを削除しようとしています[他のブラウザでは.bind( "focus"、function()を使用していますが、Safariでは機能しませんか?

私は現在使用しています

jQuery('.top_class input').bind("focus", function(){
jQuery(this).parents('.row').addClass("add_over"); 
            })
            .bind("blur", function() { 
jQuery(this).parents('.row').removeClass("add_over"); 
            });

これは Safari では機能しません - コードを Safari で機能させるにはどうすればよいですか?

4

2 に答える 2

0

従来の方法で作業している場合はinput[type=checkbox]、次のようなクリック イベントを探していると思います。

jQuery('.top_class').click(function(){
    jQuery(this).closest('.row').toggleClass("add_over", jQuery(this).is(':checked') );
});

明確にするために、これがチェックボックス HTML である場合 (多かれ少なかれ)、これは機能します。

<input type="checkbox" class="top_class" name="whatever" />

更新focus: Safari は、設定に応じてチェックボックスを受け入れる場合と受け入れない場合があります。これをテストする方法がないため、次のように処理します。

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');
});

それはあなたが望むことをするはずです。ここで Safari で動作するデモを見ることができます: http://jsbin.com/ohuxe/

于 2009-12-09T03:33:17.337 に答える
0

.bind("click") を使用して、checked 属性を確認してみましたか?

jQuery("input.top_class").bind(
     "click", 
      function() { alert(jQuery(this).attr("checked")) }
     ) 
于 2009-12-09T03:33:48.050 に答える