我开始为一个工作项目制作一个脚本,但我想知道如何解决这个问题?如果有更好的方法呢?。
当用户调用脚本时,他可以添加一些最佳参数,如果它们存在,我希望脚本用新值替换默认值。
如下例所示,它应将Size
:3
替换为4
$(document).ready(function () {
$("#JGallery").JGallery({
Size: '4'
});
});
$.fn.JGallery = function (options) {
var obj = {
Size: '3',
Width: '1190'
};
$.each(options, function (x, y) {
$.each(obj, function (xx, yy) {
if (xx == x) {
xx = y;
}
});
});
$('#testSize').html(obj.Size)
$('#testWidth').html(obj.Width)
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="JGallery"></div>
<div id="testSize"></div>
<div id="testWidth"></div>
我碰到了一个关于如何存在的替换价值的墙,并且很乐意以正确的方式进行指导。感谢
答案 0 :(得分:1)
您需要将obj
对象用作关联数组来更新它。
这是一个有效的代码:http://codepen.io/adrenalinedj/pen/qZMwVJ
以下是更正的部分:
$.each(options, function (x, y) {
$.each(obj, function (xx, yy) {
if (xx == x && yy != y) {
obj[xx] = y;
}
});
});
我还添加了关于检查条件中的值的部分(例如yy != y
)。
答案 1 :(得分:0)
最简单的解决方案是使用jQuery.extend https://api.jquery.com/jquery.extend/
在上面的例子中你可以写:
var obj = $ .extend({},{
尺寸:&#39; 3&#39;,
宽度:&#39; 1190&#39;
},options);