gpt4 book ai didi

javascript - 将函数绑定(bind)到其他范围的 onClick

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:46:25 26 4
gpt4 key购买 nike

我正在尝试将函数绑定(bind)到 anchor onclick 属性。我没有使用传统的 jQuery 的 bind/live/on/whatever,因为我有一些其他脚本停止事件传播(我知道这很糟糕)。

为了将函数绑定(bind)到 onclick 属性,我将一个 JSON 对象传递给一个模块,如下所示:

function foo() {
alert('foo')
}

$('document').ready(function() {
var options = {
opt1: 'fooID',
opt2: 'barID',
json: mightyJSON,
actions: [
{ url: 'contact/_id_/edit', text: "Edit", iconPath: 'edit.png' },
{ url: '#', onClick: foo, text: "Delete", iconPath: 'delete.png' }
]
};

var trolol = myModule.configure(options);
});

如您所见,名为“foo”的函数是通过 JSON 的 onClick 属性传递的。函数定义在对象之上。

myModule 中,我正在创建这样的 anchor 标记:

var buildLinks = function(objectID)
{
var linksNbr = actions.length;
var link, cssClass;

for (var i = 0; i < linksNbr; i++)
{
// Adding the object ID to the URL
link = actions[i].url.replace('_id_', objectID);
cssClass = actions[i].cssClass || '';

var $link = $(document.createElement('a')).attr('onClick', actions[i].onClick)
.attr('href', link)
.attr('title', actions[i].text)
.addClass(cssClass)
.text('foo');
}

return $link.html();
};

事实是,正如您所期望的那样,“foo”仅在脚本被解析时执行。 onclick 甚至在之后都不起作用。

我可以像这样传递它 onClick: 'foo()'onclick 有效,但它也在解析时执行,在我看来,它非常难看。

我希望仍然能够像这样传递它 onClick: foo 但工作正常(即不在加载时执行,但仅在单击时执行。

不幸的是,它必须与 jQuery 1.4.4 一起工作。

最佳答案

我会这样做:

var $link = $('<a></a>',{
href : link,
title : actions[i].text,
'class' : cssClass,
text : 'foo',
click : actions[i].onclick
})
return $link;

然后使用其中一个(12)函数插入节点,这是带有事件的 html。


对于传播问题我会做这样的事情:

html <a href="#no" ....>text</a>

js $('a[href="#no"]').live('click',function(){ return false; });

每当 href 指向 #no 时都是这种方式事件最终传播

关于javascript - 将函数绑定(bind)到其他范围的 onClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11824878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com