1

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

$.widget("ui.test", {

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

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

});

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

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

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

我该如何解决这个问题?

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

4

2 回答 2

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);​
于 2012-10-23T13:39:57.250 回答
0

这是最近修复的一个错误:

http://bugs.jqueryui.com/ticket/8713

https://github.com/jquery/jquery-ui/commit/9b908878ae3a9c0fbbd9958b579f223a648c5c69

于 2012-10-25T09:12:57.390 回答