声明的变量似乎不是全局的

时间:2013-12-23 19:43:54

标签: javascript jquery

我先声明了我的变量 - 然后让我的jquery:

var cimg = '';
jQuery(function($) {
    $(".trigger").click(function() {
  var cimg = event.target.id;
  clickedimage();
  loadPopup();
});
});

然后是jquery之外的脚本:

function clickedimage()
  {
    var xmargin  = $(cimg).width()/2;
    var ymargin = $(cimg).height()/2;
    $("#popupimage").css('margin-left',-xmargin+'px')
    $("#popupimage").css('margin-top',-ymargin+'px')
    var Clicked = cimg.src;
    $('#popupimage').attr('src',Clicked);
  }

似乎不想接受.trigger点击事件提供的cimg值

我在这里做错了什么?

2 个答案:

答案 0 :(得分:5)

在点击事件中,您执行var cimg = ...;var关键字告诉它创建一个新的局部变量,而不是使用外部范围中的变量。

删除处理程序内的var

var cimg = '';
jQuery(function($) {
    $(".trigger").click(function(event) {
        cimg = event.target.id;
        clickedimage();
        loadPopup();
    });
});

答案 1 :(得分:1)

重新声明var cimg会导致它成为函数范围内的局部变量。此外,您还没有提供event,这也会导致错误(某些浏览器允许引用window.event)。

jQuery(function($) {
    $(".trigger").click(function(event) {
        cimg = event.target.id;
        clickedimage();
        loadPopup();
    });
});