是否可以将字符串转换为选择器?
我知道可以将它变成DOM选择器:
EX:
var a = '.string';
var b = $( a );
通过这种方式,它将选择具有.string
类的元素,但如果在jQuery插件中我需要一个字符串来改变,然后选择一个选项或更改CSS规则呢?
在我的插件中,我有两个元素,第一个位于左侧,第二个位于右侧。我需要根据它们的宽度来改变边距。因为我觉得如果有可能用dinamically创建选择器(根据他们的位置),我觉得链接加倍。有了这个插件,我可以做我想做的事情,但选择器将作为字符串返回。
EX:
$.fn.myFunction( options ) {
var cfg = $.extend({
left: {
selector : '.selector',
width : 300
},
right: {
selector : undefined,
width : 500
}
}, options ),
$wrapper = $( this ),
left = cfg.left,
right = cfg.right;
function isDefined( e ) {
if ( e == undefined ) {
//do nothing
} else {
var align,
$element = $( e ),
position: {
right: $element.css( 'right' )
};
switch( position.right ) {
case 'auto':
align = 'left';
break;
case '0':
align = 'right';
break;
}
var def = 'cfg.' + align + '.width';
var mar = 'margin-' + align;
$element.css({
mar: -def,
width: def
});
}
isDefined( left );
isDefined( right );
return this;
};
正如您所读,我需要 def 变量 cfg.left.width 或 cfg.right.width 才能选择相对选项。虽然它总会返回一个字符串。如何使该字符串有效?
另外,我需要动态设置边距: mar = 'margin-' + align
将返回例如"margin-left"
,然后在css方法中使用它?
答案 0 :(得分:1)
您应该使用括号表示法,而不是字符串
var def = cfg[align].width
会得到你想要的东西