jQuery global var无效

时间:2016-04-29 08:47:52

标签: javascript jquery

我想声明全局变量,但它一直在说undefined

<div class="last">Blah</div>
$(document).ready(function() {
    $(document).on('click', '.last', function() {
        window.testing = $(this).html();
    })
    console.log(testing);
})

我也试过了。

$(document).ready(function() {
    var testing;
    $(document).on('click', '.last', function() {
        testing = $(this).html();
    })
    console.log(testing);
})

3 个答案:

答案 0 :(得分:1)

试试这个:

&#13;
&#13;
$(function() {
	
  var testing;

  $('.last').click(function() {

    testing = $(this).html();

    alert(testing);
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="last">Blah (click here)</div>
&#13;
&#13;
&#13;

您的代码:

$(document).ready(function() {
    var testing; // testing = undefined

    $(document).on('click', '.last', function() {

        testing = $(this).html();
    })

    console.log(testing); // prints undefined, because onlick event has not fired yet and testing is not equal to $(this).html();
}

答案 1 :(得分:1)

您的代码运行正常,但不是您期望的代码。您在加载DOM时读取testing变量,但在单击按钮后,您只能为其指定值。相反,您需要一种方法来在设置后读取window.testing变量。以下是使用按钮点击的示例。

&#13;
&#13;
$(document).ready(function() {
  $(document).on('click', '.last', function() {
    window.testing = $(this).html();
  })

  $('button').click(function() {
    console.log(window.testing);
  });
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="last">Set</div>
<button>Read</button>
&#13;
&#13;
&#13;

另请注意,使用全局变量并不是一件好事。如果需要允许变量在各个地方使用,请使用命名空间。

答案 2 :(得分:0)

试试这个

var testing = "";
$(document).ready(function() {
    $(document).on('click', '.last', function() {
        testing = $(this).html();
    });
    console.log(testing);
});

被修改

尝试将简单值传递给变量,然后传递.last类值

var testing = "";
$(document).ready(function() {
    $(document).click(function() {
        testing = 1;
        alert(testing);
    });

});