在Jquery中设置全局变量onclick

时间:2013-09-26 06:37:03

标签: javascript jquery html css

我想在Jquery中设置一个全局变量,这样当我点击一个列表项时,单击的列表项的id就变成了变量的值。 我有以下代码,也在this fiddle

然而我拥有它的方式:当你点击列表项时,正确的值被放入console.log.However然后当我点击demo div时,变量被重置并且是未定义的。< / p>

当我点击demo时,如何获取id的值,当我点击列表项时,它是id的值?

例如:

当我点击aaa时,点击演示框时的值应为id-1

当我点击bbb时,点击演示框时的值应为id-2

    <div id="demo"></div>
    <ul>
        <li id="id-1">aaa</li>
        <li id="id-2">bbb</li>
    </ul>

    <script>
    var id;
    jQuery(document).on("click", "li", function (event) {
            var id =jQuery(this).attr('id') || '';
            console.log(id);
        $( "#demo" ).show();
        });

    $(function() {
    $("#demo").click(function(e) {
    console.log(id);
    });
    });

    </script>

    <style>
    #demo {
        border: 1px solid; 
        display:none;
        height: 100px; 
        width: 100px;
    }
    </style>

4 个答案:

答案 0 :(得分:7)

  var id;
  jQuery(document).on("click", "li", function (event) {
      //should not not var here, using var here will declare the variable id as a local variable in the handler function scope
      id = jQuery(this).attr('id') || '';
      console.log(id);
      $("#demo").show();
  });

  $(function () {
      $("#demo").click(function (e) {
          console.log(id);
      });
  });

答案 1 :(得分:4)

你再次在循环中声明id

 var id;
    jQuery(document).on("click", "li", function (event) {
            id =jQuery(this).attr('id') || '';
            console.log(id);
        $( "#demo" ).show();
        });

更改

var id =jQuery(this).attr('id') || ''; to 

id =jQuery(this).attr('id') || ''; inside the loop.

答案 2 :(得分:2)

这是因为你重申了var id

var id;  // GLOBAL
jQuery(document).on("click", "li", function (event) {
        var id =jQuery(this).attr('id') || ''; // LOCAL TO THIS BLOCK

所以只需使用全局变量,

var id;  // GLOBAL
jQuery(document).on("click", "li", function (event) {
id =jQuery(this).attr('id') || ''; // Use GLOBAL id here 

答案 3 :(得分:0)

演示http://jsfiddle.net/devmgs/LbZe6/1/

不要使用var inside,因为它会使它成为局部变量

var id;
jQuery(document).on("click", "li", function (event) {
        id =jQuery(this).attr('id') || '';
        console.log(id);
    $( "#demo" ).show();
    });

$(function() {
$("#demo").click(function(e) {
console.log(id);
});
});