2

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

这不是完全相同的情况,但这里有一份类似的报告

4

3 回答 3

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 事件的一种骇人听闻的方式。

于 2009-10-12T15:09:00.130 回答
1

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

span.onclick = function(){ someFunction('here'); }
于 2010-08-09T18:45:37.577 回答
1

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

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

然后在加载完成后,我使用这里的事件委托代码来捕捉 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);
}
于 2011-04-26T15:47:21.477 回答