Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 值在ajax调用之间不会更改_Javascript_Jquery_Ajax - Fatal编程技术网

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”
所以每次我点击一个不同的名字(然后不管是什么btn),警报就会相应地显示名字和btn


有办法吗?谢谢大家!

仅供参考,使用事件回调绑定事件是一种不好的做法。例如:

   $('.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();
});

谢谢您抽出时间。你能提供一些有用的链接来阅读更多关于这方面的内容吗?