用对象覆盖jquery ui widget字符串选项

时间:2012-10-23 13:11:26

标签: jquery jquery-ui jquery-widgets

我希望jquery ui widget选项默认为字符串,但我希望它能够被一个对象覆盖。当我这样做时,我实际上以一种奇怪的方式将字符串转换为对象,然后使用我传入的任何对象进行扩展。

$.widget("ui.test", {

    options: {
        anOption: "a,b,c"
    },

    _create: function() {
        console.log(this.options);
    }

});

$('div').test({
    anOption: {
        a: 'A'
    }
});

如果我跳过向窗口小部件传递选项,它将在_create方法中作为字符串接收。如果我传入一个对象,就会发生奇怪的行为。在chromes js console log中我得到了这个,这不是我想要的。

Object
anOption: Object
0: "a"
1: ","
2: "b"
3: ","
4: "c"
a: "A"

我该如何解决这个问题?

jsfiddle:http://jsfiddle.net/MatteS75/s9wK2/

2 个答案:

答案 0 :(得分:1)

如果在创建窗口小部件后更改选项,它将使用所需的对象覆盖该选项。这可以接受吗?

$.widget("ui.test", {

    options: {
        anOption: "a string"
    },

    _create: function() {
        console.log(this.options.anOption);
    }

});

$('div').test({});


$('div').test("option", "anOption", {
    a: "option1",
    b: "option2"
});

var anOption = $('div').test("option", "anOption");

​console.log(anOption);​

答案 1 :(得分:0)