简单的jQuery函数适用于所有浏览器,但不适用于IE

时间:2010-01-06 06:50:36

标签: jquery internet-explorer

function check_info(id,value){
    var data = $("#"+id+":checked").val();
    if(value==1){ 
        if(data == 'on'){
           var id_val = id.substring(7);
            $("#user_g"+id_val).css("display","block");
            $(".chkbox_"+id_val).attr("checked","checked");
            $("#user_hidden_"+id_val).val("2");
        }
        else{
            var id_val = id.substring(7);
            $("#user_hidden_"+id_val).val("0");
            $("#user_g"+id_val).css("display","none");
            $(".chkbox_"+id_val).attr("checked","");
            $("#user_hidden_"+id_val).val("0");
        }
    }
 ......
 ......
}

应该从这里调用该函数,并根据复选框选项,它将显示以下div或hide。它适用于所有浏览器,但不适用于任何版本的IE。请帮忙。

<input name="gro_id_1" type="checkbox" id="gro_id_1" onclick="javascript:check_info(this.id,'1')" title="Office">


<div id="user_g1" class="gr_block">
    --- outupt ---
</div>

2 个答案:

答案 0 :(得分:3)

考虑:

  1. if(data == 'on')改为if ($("#"+id).is(":checked"))
  2. .attr("checked", "")替换为.removeAttr("checked")
  3. 将复选框事件与以下内容绑定,而不是onclick=

    $(function() {
        $("#gro_id_1").click(function() {
            check_info(this.id, '1');
        });
    });
    

答案 1 :(得分:1)

我建议use $("#user_g"+id_val).show()代替$("#user_g"+id_val).css("display","block");use $("#user_g"+id_val).hide()代替$("#user_g"+id_val).css("display","none");

这可能不是问题,但这是隐藏和显示元素的更“jQuery标准”方式。

此外,value var来自何处?是否在范围内,因为我无法在代码段中看到它。

onclick="javascript:check_info(this.id,'1')"可能是你的问题。尝试Oren上面提出的建议。