Safari中的jQuery复选框

时间:2009-12-09 03:28:22

标签: jquery checkbox blur

我想在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中运行?

2 个答案:

答案 0 :(得分: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" />

更新:Safari可能会也可能不会在复选框上接受focus,具体取决于设置。由于没有办法测试这个,我会这样处理:

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中运行的一个DEMO:http://jsbin.com/ohuxe/

答案 1 :(得分:0)

您是否尝试过使用.bind(“点击”)并检查已检查的属性?

jQuery("input.top_class").bind(
     "click", 
      function() { alert(jQuery(this).attr("checked")) }
     )