【问题标题】:Using jQuery, the onclick event, and Adobe AIR使用 jQuery、onclick 事件和 Adob​​e AIR
【发布时间】:2009-08-31 22:37:43
【问题描述】:

我正在使用一些 jQuery 构建一个 Adob​​e AIR 应用程序,以动态更改应用程序的显示。部分显示包括与 onclick 事件上的 Javascript 函数的链接,除非在应用程序中,当 jQuery 操作 div 时忽略 onclick。我已经确认,当它是原始 HTML 的一部分时,onclick 可以正常工作,并且 jQuery(在浏览器中)通常能够添加包含 onclick 事件的 HTML。知道为什么 Adob​​e AIR 会导致它窒息吗?

不是完全一样的情况,而是here's a similar report

【问题讨论】:

标签: javascript jquery air onclick


【解决方案1】:

为了让它发挥作用,我必须做几件事。首先,在动态生成 HTML 时,我为所有想要使其可点击的元素分配了一个唯一的类(并模拟了 onclick 行为)。生成显示后,我将页面上的所有跨度都拉出来:

var span = document.getElementsByTagName('span');

然后遍历它们,在我需要可点击操作的地方添加一个事件监听器:

for(var i=0; i<span.length; i++){
if (span[i].className == "firstUniqueClass") {
    span[i].addEventListener("click", firstUniqueFunction, false);
} else if (span[i].className == "secondUniqueClass") {
    span[i].addEventListener("click", secondUniqueFunction, false);
}
}

简而言之,这让我能够在其中一个跨度上有点击事件时分配一个函数。不幸的是,我还想将变量传递给我的函数。我最终不得不在元素中以伪 RDF 对它们进行编码,然后在函数中对其进行解码。例如,如果我添加了 'data:url="http://www.google.com/"',我会重新生成它:

function copyLink(event) {
    var startPos = event.currentTarget.outerHTML.indexOf('data:url="') + 10;
    var endPos = event.currentTarget.outerHTML.indexOf('"', startPos + 2);
    var link = event.currentTarget.outerHTML.slice(startPos, endPos);
}

多田。在 Adob​​e AIR 中重新启用 onclick 事件的一种骇人听闻的方式。

【讨论】:

    【解决方案2】:

    这是我使用的,不限制你addEventListener缺乏使用函数参数的能力。

    span.onclick = function(){ someFunction('here'); }
    

    【讨论】:

      【解决方案3】:

      我也在寻找解决方案,这就是我最终得到的结果。
      加载应用时,我有一个空 div。

      <div id="left-list">
      </div>
      

      然后在加载完成后,我使用来自here 的事件委托代码来捕捉 div 中的点击并找出点击了什么。在我的情况下,我使用类 list-item 向 div 添加按钮。

      $(document).ready(function(){
          $('#left-list').click(function(e){
          if( $(e.target).is('.list-item') )
              loadListItem(e);
          });
      });
      

      现在我可以提取我想要的属性并做一些事情了。

      function loadListItem(e){
          var itemID = e.target.id;
          var source = $('#'+itemID).attr('src');
          alert(itemID + ' ' + source);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-17
        • 2012-03-25
        • 2010-09-25
        • 1970-01-01
        相关资源
        最近更新 更多