在Jquery中设置全局变量onclick
我想在Jquery中设置一个全局变量,这样当我单击列表项时,单击的列表项的id将成为变量的值。 我有下面的代码也在这个小提琴 。
但是我拥有它的方式:当你单击列表项时,值正确地放入console.log.However然后当我点击demo div时,变量被重置并且是未定义的。
当我点击demo时,如何获取id的值,当我点击列表项时,它是id的值?
例如:
当我点击aaa时,点击演示框时的值应为id-1
当我点击bbb时,单击演示框时的值应为id-2
- aaa
- bbb
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); }); }); #demo { border: 1px solid; display:none; height: 100px; width: 100px; }
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); }); });
你再次在循环中声明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.
这是因为你重新声明了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
演示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); }); });