获取Class属性适用于IE9但不适用于IE8

时间:2013-09-06 20:09:25

标签: javascript jquery internet-explorer-8

我有这个内部应用程序。它在IE9(和所有其他浏览器)中运行良好,但一些内部用户仍然在IE8上。

导致问题的一行是:

var thisClass = $thisElement.attributes.class.value;  

我收到的错误信息是“SCRIPT1010:预期的标识符”,标记就在课堂上的c之前。

以下是代码:

$(document).on('click', function(){ 
var $this = $(this);
var $thisElement = $this.context.activeElement;
if ($thisElement != null && $thisElement.attributes.type != null && $thisElement.attributes.type.value == "checkbox"   ){
        var thisClass = $thisElement.attributes.class.value;
        var thisValue = $thisElement.value;
        if (thisValue == "All"){
            if($thisElement.checked){
                $('input[class="'+thisClass+'"]').each(function(i){
                        var checkboxValue = $(this).val();
                        $("#"+thisClass+checkboxValue).prop('checked',true);
                 });

            }else {             
                $('input[class="'+thisClass+'"]').each(function(i){
                    var checkboxValue = $(this).val();
                    $("#"+thisClass+checkboxValue).prop('checked',false);
                });                 
            }               
        }else // since the val is not = all we want to uncheck the all box if any of the bottom boxes is unchecked
        if (!$thisElement.checked){                 
                $("#"+thisClass+"All").prop('checked',false);
        }
        cnse.checkTheCheckboxes();
    }else{
        return;
    };// end if it is a checkbox
});

2 个答案:

答案 0 :(得分:3)

基于ECMAScript 3的引擎,与IE8中的引擎一样,不允许将保留字用作带点符号的标识符。对于他们,您需要使用bracket notation引用class

var thisClass = $thisElement.attributes["class"].value;

ECMAScript 5更改了一些用例以允许使用Identifier Names rather than just Identifiers,包括使用dot notation。这就是为什么它在IE9中有效。

您也可以将className property简单地用作Marc suggested,因为这不是保留字。

答案 1 :(得分:1)

如果您希望在HTML中获取元素的类,则需要在元素本身上使用className属性:

var thisClass = $thisElement.className;