函数无法访问jQuery全局变量

时间:2010-07-31 03:08:26

标签: jquery global-variables

我有一段代码,用于计算某些子项的宽度,而不是在EVERY函数中声明parentWidth和其他变量。我正在尝试创建要重用的全局变量..但是,它不是工作

以下是我的代码的一部分:

$(document).ready(function(){

parentWidth = $(this).parent().width();     // parent width in pixels
margin = parentWidth/100;               // pixel equivalent of a 1% margin
border = 6;                 // 6px total border for each input field 


    $(".element.twoinone input").each(function() {
        $(this).css( 'width',
            (((parentWidth - (margin * 2)) - (border * 2))  / 2)
            + 'px' );
    });
});

'every'函数(我有多个函数)不能访问parentWidth,margin和border变量。我尝试过使用live(),livequery(),等等。但是,没有骰子。我知道它可能是一个简单的东西,这个菜鸟可以俯瞰..所以任何帮助都非常感谢!! 谢谢! 另外,如果你有任何关于根据父容器宽度计算宽度百分比的输入,并考虑每个元素边界,边距和数量,...我都是耳朵:D

更新 不是这个:  $(文件)。就绪(函数(){

parentWidth = $(this).parent().width();     

    $(".element.twoinone input").each(function() {
        $(this).css( 'width',
            (((parentWidth - (margin * 2)) - (border * 2))  / 2)
            + 'px' );
    });
});

与此相同:

(文档)$。就绪(函数(){

    $(".element.twoinone input").each(function() {
        $(this).css( 'width',
            (((     $(this).parent().width()     - (margin * 2)) - (border * 2))  / 2)
            + 'px' );
    });
});

3 个答案:

答案 0 :(得分:2)

当你宣布这个时:

parentWidth = $(this).parent().width();

您没有获得该元素的父的宽度<input>),而document使用this,因为这是上下文你需要获得函数内部的宽度,无论是在每个内部还是作为插件,但不是像这样“全局”。

答案 1 :(得分:0)

parentWidth不是document.ready函数中存在的全局变量,但它不是任何函数的全局变量。

除非您在document.ready之前声明此变量:
像这样:

var parentWidth;
$(document).ready(function(){
parentWidth = $(this).parent().width();
....

其他2个变量也是如此。

答案 2 :(得分:0)

尝试将变量放在$(document).ready()

之外