Javascript 值在ajax调用之间不会更改
我举了以下例子:Javascript 值在ajax调用之间不会更改,javascript,jquery,ajax,Javascript,Jquery,Ajax,我举了以下例子: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> </
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
<a href="" class="names" id="1">Name 1</a>
<a href="" class="names" id="2">Name 2</a>
<a href="" class="names" id="3">Name 3</a>
<br/><br/>
<button id="btn1">BTN1</button>
<button id="btn2">BTN2</button>
<div id="content"></div>
<script type="text/javascript">
$(document).ready(function(){
$('.names').click(function(e){
var name = $(this).attr('id');
e.preventDefault();
$('#btn1').click(function(e){
var btn = $(this).attr('id');
alert('Name = '+name+' btn='+btn);
e.preventDefault();
});
$('#btn2').click(function(e){
var btn = $(this).attr('id');
alert('Name = '+name+' btn='+btn);
e.preventDefault();
});
});
});
</script>
</body>
</html>
文件
BTN1
BTN2
$(文档).ready(函数(){
$('.names')。单击(函数(e){
var name=$(this.attr('id');
e、 预防默认值();
$('#btn1')。单击(函数(e){
var btn=$(this.attr('id');
警报('Name='+Name+'btn='+btn);
e、 预防默认值();
});
$('#btn2')。单击(函数(e){
var btn=$(this.attr('id');
警报('Name='+Name+'btn='+btn);
e、 预防默认值();
});
});
});
在我的项目中,所有这些都是在ajax的帮助下进行的
所以,比方说,当单击名称3,然后单击BTN1时,警报包含“名称=3 btn=BTN1”
在此之后,如果单击名称1,然后单击BTN2,则第一个警报包含“名称=3 btn=BTN2”,第二个警报包含“名称=1 btn=BTN2”
我认为这是默认行为。但我需要做的是:
- 如果单击名称3和BTN2,则警报将显示“名称=3 btn=BTN2”
- 然后,如果单击名称1和BTN1,则警报将显示“名称=1 btn=BTN1”
- 然后,如果单击名称2和BTN2,则警报将显示“名称=2 btn=BTN2”
- 等
有办法吗?谢谢大家! 仅供参考,使用事件回调绑定事件是一种不好的做法。例如:
$('.names').click(function () {
$('button[id^=btn]').click(function () {
// code
});
});
在上述代码上发生的情况是,每次单击.names
时,单击按钮[id^=btn]
的事件都会绑定
解决方案:
var name, btn;
function do_alert() {
name && btn && alert('Name = ' + name + ' btn=' + btn);
name = btn = null;
}
$('.names').click(function (e) {
e.preventDefault();
name = $(this).attr('id');
});
$('button[id^=btn]').click(function (e) {
e.preventDefault();
btn = $(this).attr('id');
do_alert();
});
谢谢您抽出时间。你能提供一些有用的链接来阅读更多关于这方面的内容吗?