在jQuery中使用全局变量,但不运行

时间:2015-04-16 10:11:03

标签: javascript jquery

我有这个代码

function myFunction(PostID){    
    // Get Image Src
    ImgSrc = $('#' + PostID + ' .myImg').attr('src');

    // Set Output
    var PostImgOutput = $('.inf-shf-pr .Post-img') ;

    //Put a src in out put
    PostImgOutput.attr({ 'src': ImgSrc });
}

哪个运行,但如果我使用它:

var PostImgOutput = $('.inf-shf-pr .Post-img') ;

作为全局变量我的代码不起作用。有什么问题?

// Set Output
var PostImgOutput = $('.inf-shf-pr .Post-img') ;

function myFunction(PostID) {
    // Get Image Src
    ImgSrc = $('#' + PostID + ' .myImg').attr('src');

    //Put a src in out put      
    PostImgOutput.attr({ 'src': ImgSrc });    
}

2 个答案:

答案 0 :(得分:1)

这是因为在全局定义元素时不会加载元素。你需要在dom准备好时包装那段代码。

var PostImgOutput="";
$(function(){
  // Set Output
  PostImgOutput = $('.inf-shf-pr .Post-img') ;
});

答案 1 :(得分:1)

全局变量PostImgOutput必须位于document.ready事件处理程序中。这是因为当您引用$('.inf-shf-pr .Post-img');

时,dom可能还没有准备就绪
// Set Output
var PostImgOutput;

$(function() {
  PostImgOutput = $('.inf-shf-pr .Post-img');
});

function myFunction(PostID){

    // Get Image Src
    ImgSrc = $('#'+PostID + ' .myImg').attr('src');

    //Put a src in out put

    PostImgOutput.attr({'src': ImgSrc });

}

就先前条件而言:

由于函数是在稍后的某个时间调用的,那时DOM可能已准备就绪,这就是为什么它能正常工作。

但是当你把它放在函数之外时,语句将在浏览器遇到它时执行。所以当时DOM可能还没准备好。因此,请在PostImgOutput

上为document.ready分配值