代码之家  ›  专栏  ›  技术社区  ›  andkorsh

如何为冒泡的jQuery事件附加一些数据?

  •  1
  • andkorsh  · 技术社区  · 6 年前

    $("#button-1").click(function (e) { e.data = { flag: true } });
    $("#button-2").click(function (e) { e.data = { flag: false } });
    
    $(window).click(function (e) { $("p").html(JSON.stringify(e.data)) });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <button id='button-1'>button 1</button>
    <button id='button-2'>button 2</button>
    
    <p></p>

    当我在一个事件上附加任何东西时,它会在冒泡到窗口后消失。有办法保存吗?

    2 回复  |  直到 6 年前
        1
  •  2
  •   t.niese    6 年前

    我现在不能告诉你为什么它不能那样工作,我需要首先检查jQuery的源代码。

    但你可以把它贴在 originalEvent data ,以避免命名冲突。

    $("#button-1").click(function (e) { e.originalEvent.data = { flag: true } });
    $("#button-2").click(function (e) { e.originalEvent.data = { flag: false } });
    
    $(window).click(function (e) { $("p").html(JSON.stringify(e.originalEvent.data)) });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <button id='button-1'>button 1</button>
    <button id='button-2'>button 2</button>
    
    <p></p>
        2
  •  0
  •   benvc    6 年前

    target window 但这应该给你一个想法)。

    $(window).click(function (e) {
      if (e.target.id == 'button-1') {
        e.data = {flag: true};
      } else if (e.target.id == 'button-2') {
        e.data = {flag: false};
      }
      $('p').html(JSON.stringify(e.data));
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <button id='button-1'>button 1</button>
    <button id='button-2'>button 2</button>
    
    <p></p>