js - 使用jquery设置var =元素的宽度

时间:2012-03-25 02:37:38

标签: php javascript jquery google-maps-api-3

我有一个用于输出谷歌地图的脚本,我正在使用信息框

在我的脚本中,我对信息框有一个“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

2 个答案:

答案 0 :(得分:3)

可能只是语法。您的变量s_infobox_k是包含属性的对象。您无需定义变量即可设置属性。

closeBoxMargin: jQuery('.infobox').width(),

[补充]我可能也误解了你想要的closeBoxMargin的价值。它是否需要字面上看起来像"-14px InfoboxWidth()px"的字符串?或者它需要像"-14px 200px"那样200px是InfoboxWidth的宽度?我将假设后者......所以我们需要构建一个字符串,而不是直接向宽度方向移动。最简单,最简单的方法就是连接你需要的东西:

closeBoxMargin: "14px " + jQuery('.infobox').width() + "px",

http://jsfiddle.net/7KAKY/1/

giggles的奖金

如果“14px”是一个相对静态的值,但有可能不时变化,它可以存储在对象外部的变量中。 .infobox宽度也可以存储在外部。然后,您可以在构建属性对象之前将字符串连接到外部,也可以在属性中进行。以下是前者的一个例子:

var marginOffset = 14,
    infoWidth = jQuery('.infobox').width(),
    closeBoxString = marginOffset + "px " + infoWidth + "px";


var s_infobox_k = {
  // ... 
    closeBoxMargin: closeBoxString,
  // ...
};

请注意,我不会将“px”存储为14或信息宽度。它们已经以这种方式整数,准备用于涉及计算的任何其他函数。通过与字符串连接,最终结果仍然是一个字符串。

示例:http://jsfiddle.net/7KAKY/2/

答案 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,

看看是否有效。