jQuery插件覆盖所有css或仅覆盖某些属性
jQuery plugin overwrite all css or only some attributes
我正在为我的web应用程序创建一个简单的jQuery插件。现在我添加了一个"设置"选项,可以用来更改所选元素的默认CSS:
Html
<script type="text/javascript">
var mycss = {tagNormalStyle: {backgroundColor: '#ddd', color:'#222'}};
$(document).ready(function(){
$("#tag1").tagme(mycss);
$("#tag2").tagme(null);
});
</script>
jQuery插件
$.fn.tagme = function(options) {
// some defaults
var settings = $.extend({
tagNormalStyle:{
backgroundColor: 'black',
color: 'white',
marginLeft: '5px',
marginTop: '5px',
padding: '5px',
float: 'left',
borderRadius: '5px'
},
//more stuff here...,
options
};
}
在我的代码中,我使用了类似的东西:
if (condition)
tag.css = settings.tagNormalStyle;
问题是,例如,如果用户只需要更改颜色,该怎么办?
var mycss = {tagNormalStyle: {color:'#222'}};
$("#tag1").tagme(mycss);
现在,tagNormalStyle
的所有默认值都消失了!如何避免对设置对象上的每个css属性进行"硬编码"?也许我可以"合并"默认和选项对象。有什么想法吗?
谢谢!
将true作为第一个参数传递给扩展函数。类似于:
$.extend(true,obj1,obj2)
相关文章:
- 如何在mongodb(mongose)中覆盖子文档的数组属性
- 覆盖上下文.属性和函数
- CSS 属性在使用 innerHTML 时被覆盖
- 如何在更改的事件处理程序中忽略Polymer元素上默认属性的初始覆盖
- 角度:覆盖'@'链接或控制器中隔离作用域中的属性
- 正在覆盖Object.obsoe()中的属性
- (Javascript)覆盖对象内置或继承的属性
- 覆盖对象's的长度属性
- 扩展类时继承而不是覆盖属性/方法
- 为什么 Meteor 更新会覆盖我的文档中的现有属性
- 覆盖 Ember 2.x 核心组件中的“视图”级别属性
- 打字稿覆盖构造函数中的扩展属性
- 使用 getter/setter 覆盖 javascript 属性,同时仍访问底层属性
- 我想克隆一个 javascript 类. 将方法添加到克隆的属性中,而不实际覆盖现有方法
- 为什么可以删除窗口的覆盖属性
- 检查全局属性/函数是否已在 JavaScript 中被覆盖
- 如何用html5数据属性覆盖jquery插件选项
- JQuery-显示/隐藏样式属性覆盖css
- 覆盖属性CSSStyleDeclaration.textShadow
- 覆盖属性的HTML输入