网站搜索

javascript - 使用 JQuery 获取 onclick() 事件的字符串值


想知道是否有好的方法来做这件事,所以我想把它发布到 SO 社区…

有一个第三方网页,我无法控制它的渲染方式,但他们允许我添加 JQuery。

使用 JQuery,我正在页面侧边创建一个导航菜单,它将是一个链接列表。这些链接的 onclick 事件我从页面上已有的 onclick 事件中获取,但当我这样做时:

var linkLoc = $('#theLink').attr("onclick");

linkLoc 返回:

function onclick(event) {
  handleJumpTo("com.webridge.entity.Entity[OID[E471CB74A9857542804C7AC56B1F41FB]]", "smartform");
}

而不是我所期望的:

handleJumpTo("com.webridge.entity.Entity[OID[E471CB74A9857542804C7AC56B1F41FB]]", smartform");

我认为 JQuery 正在尝试获取用于绑定的事件,但我需要实际的 Javascript 标记,因为我是在动态创建 HTML。我想我可以将“function onclick(event) {”子字符串截取出来,但这看起来有点儿不正规。

有没有什么优雅的方法让我获取 onclick 标记?

答案#1

$ ("#theLink") 会返回一个 jQuery 对象,而 $ ("#theLink")[0] 会返回一个 DOM 对象。这就是 $ ("#thelink")[0].getAttributeNode('onclick').value 能够工作的原因。

答案#2

$('#theLink').attr("onclick") 的类型是函数,所以在将事件绑定到链接时,你可以直接使用它。

var linkLoc = $('#theLink').attr("onclick");
$('a#link1').live('click', linkLoc);

示例: http://jsfiddle.net/BdU6f/

如果需要,你也可以在点击处理程序中运行其他代码:

var linkLoc = $('#theLink').attr("onclick");
$('a#link1').live('click', function(e){
    // Code...
    linkLoc(e);
});

示例: http://jsfiddle.net/BdU6f/1/