“设置只有getter的属性” - 使用firefox的javascript错误

时间:2009-08-08 20:13:07

标签: javascript jquery jquery-plugins

直到最近,我一直在使用Safari 4来测试和调试我当前的jQuery插件。我在Firefox中尝试了我的代码,它开始抱怨JQuery-Framework中的某些内容:“设置一个只有getter的属性”。 我试图找出导致Firefox抱怨的行,发现这发生在这里**

$.fn.util.create_$dom = function(opt) {
    var $dom = {};
    $.each(opt.dom,function(name,val){
        console.log(name);
        var $elm = $('<div>');
        $.each(opt.dom[name],function(_name,_val){
            if(_name == 'tagName') $elm = $('<'+_val+'/>');
        });
                    console.log(name+': ok');
        $.each(opt.dom[name],function(_name,_val){             **here       
            switch(_name){                                     **here
                case 'className': $elm.addClass(_val);         **here
                default: $elm.attr(_name, _val);               **here
            }                                                  **here
        });
        $dom[name] = $elm;
        console.log(name+': ok');
    });
    return $dom;
};

options.dom看起来像这样:

    dom:{
        wrapper:{className:'wrapper'},
        inner:{tagName:'p',className:'test',test:'bla'}
    },

2 个答案:

答案 0 :(得分:7)

看起来您尝试使用此行设置元素的tagName

$elm.attr(_name, _val); 

这当然是不可能的,因为它是只读的。

答案 1 :(得分:3)

case 'tagName': break;

...是解决方案,但是为了感谢redsquare的提示我标记了他。