6

リスト項目をクリックすると、クリックされたリスト項目の ID が変数の値になるように、Jquery でグローバル変数を設定したいと考えています。このフィドルにもある以下のコードがあります。

ただし、私が持っている方法: リスト項目をクリックした瞬間に、値が正しく console.log に入れられます。ただし、その後、デモ div をクリックすると、変数がリセットされ、未定義になります。

デモをクリックしたときに 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

4 に答える 4

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);
      });
  });
于 2013-09-26T06:39:24.423 に答える
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.
于 2013-09-26T06:39:02.927 に答える
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 
于 2013-09-26T06:43:45.663 に答える
0

デモhttp://jsfiddle.net/devmgs/LbZe6/1/

ローカル変数になるため、内部で var を使用しないでください

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);
});
});
于 2013-09-26T06:39:59.637 に答える