我有一个用于输出谷歌地图的脚本,我正在使用信息框
在我的脚本中,我对信息框有一个“dnamic”宽度,效果很好。 问题是我需要设置“关闭”按钮边距。 信息框采用了“信息框”类的元素。
var s_infobox_k = {
content: "z",
disableAutoPan: false,
maxWidth: 0,
zIndex: null,
boxStyle: {
padding: "10px",
width: "150px"
},
closeBoxMargin: "-14px", // <-- HERE I NEED THE WIDTH OF THE DIV
closeBoxURL: pluginDir + "/images/close.png",
isHidden: false,
pane: "floatPane",
enableEventPropagation: false
};
基本上我需要closeBoxMargin为" closeBoxMargin: "-14px InfoboxWidth()px",
所以我厌倦了设置VAR
var width_div = jQuery(\'.infobox\').width() ;
但由于某种原因,它只在JS中打印完全相同的语法。 (例如在JS中我会看到 - var width_div = jQuery(\'.infobox\').width() ;
) - 而不是var width_div = valuePx
。
这是一些语法错误吗?还是我做了一件非常糟糕的事情? var为什么没有设置?
编辑1:
这个所有的javascript都是由超简单的php生成的。
function print_front_script() {
return '
<script type="text/javascript">
... script here
</script>
';}
绝对没有其他问题.. 甚至用PHP设置var也很棒
closeBoxMargin: "-14px -'.((($this->innerthumbs_w)/2)+50).'px",
问题是PHP无法知道div宽度......
编辑II
可以在此处查看完整脚本: http://codepad.org/cC1qGPbV
编辑III 添加了xHTML OUTPUT http://codepad.org/YdnMoVLq
答案 0 :(得分:3)
可能只是语法。您的变量s_infobox_k是包含属性的对象。您无需定义变量即可设置属性。
closeBoxMargin: jQuery('.infobox').width(),
[补充]我可能也误解了你想要的closeBoxMargin的价值。它是否需要字面上看起来像"-14px InfoboxWidth()px"
的字符串?或者它需要像"-14px 200px"
那样200px是InfoboxWidth的宽度?我将假设后者......所以我们需要构建一个字符串,而不是直接向宽度方向移动。最简单,最简单的方法就是连接你需要的东西:
closeBoxMargin: "14px " + jQuery('.infobox').width() + "px",
如果“14px”是一个相对静态的值,但有可能不时变化,它可以存储在对象外部的变量中。 .infobox
宽度也可以存储在外部。然后,您可以在构建属性对象之前将字符串连接到外部,也可以在属性中进行。以下是前者的一个例子:
var marginOffset = 14,
infoWidth = jQuery('.infobox').width(),
closeBoxString = marginOffset + "px " + infoWidth + "px";
var s_infobox_k = {
// ...
closeBoxMargin: closeBoxString,
// ...
};
请注意,我不会将“px”存储为14或信息宽度。它们已经以这种方式整数,准备用于涉及计算的任何其他函数。通过与字符串连接,最终结果仍然是一个字符串。
答案 1 :(得分:0)
如果宽度由CSS设置,您可以随时使用:
var width_div = $('.infobox').css('width');
将返回(例如):500px
如果它没有使用CSS,而您只是使用width =“500”进行设置,则可以使用:
var width_div = $('.infobox').attr('width');
将返回(例如):500
要将此添加到您要执行的操作中,您可以执行以下操作:
closeBoxMargin: "-14px " + width_div,
编辑#1
好吧,因为你不断获得文字字符串,你可以尝试通过预先构建字符串来修复它,而不是动态地构建值。
像这样:
var closeBoxMarginValue = "14px " + $('.infobox').css('width');
然后将其放入:
closeBoxMargin: closeBoxMarginValue,
看看是否有效。