Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用对象覆盖jquery ui小部件字符串选项_Jquery_Jquery Ui_Jquery Widgets - Fatal编程技术网

使用对象覆盖jquery ui小部件字符串选项

使用对象覆盖jquery ui小部件字符串选项,jquery,jquery-ui,jquery-widgets,Jquery,Jquery Ui,Jquery Widgets,我希望jQueryUI小部件选项在默认情况下是字符串,但我希望它能够被对象覆盖。当我这样做时,我实际上以某种奇怪的方式将字符串转换为一个对象,然后用我传入的任何对象进行扩展 $.widget("ui.test", { options: { anOption: "a,b,c" }, _create: function() { console.log(this.options); } }); $('div').test({

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

$.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"
我如何解决这个问题


jsiddle:

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

$.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);​

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

$.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);​

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


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


它将字符串转换为对象,每个字符根据其索引成为属性。你想让它生产什么?重写
anOption
如下
anOption:{a:“a”}
小部件选项功能的工作原理如下<代码>var s=“字符串”;log($.extend({},s,{a:“new”}));​我在jQueryUI本身,即可调整大小的小部件中也遇到了这个问题:它将字符串转换为一个对象,每个字符根据其索引变成一个属性。你想让它生产什么?重写
anOption
如下
anOption:{a:“a”}
小部件选项功能的工作原理如下<代码>var s=“字符串”;log($.extend({},s,{a:“new”}));​我在jQueryUI本身,即可调整大小的小部件中也遇到了这个问题:我不能接受这个解决方案,尽管感谢您给我一个可能的解决方案。问题是,我无法控制其他开发人员如何使用这个小部件,我更希望能够在第一次初始化时让所有选项都起作用。明白。我想我会发布一个可能的解决方法。谢谢你给我回复解释!我认为这是很好的反馈!我不能接受这个解决方案,不过谢谢你给我一个可能的解决方案。问题是,我无法控制其他开发人员如何使用这个小部件,我更希望能够在第一次初始化时让所有选项都起作用。明白。我想我会发布一个可能的解决方法。谢谢你给我回复解释!我认为这是很好的反馈!