【问题标题】:How to capture the click event on a link inside a frame using jQuery?如何使用jQuery捕获框架内链接上的点击事件?
【发布时间】:2013-02-22 23:46:47
【问题描述】:

我在 jsp 页面中使用 jQuery 1.6.2,我试图捕获框架中任何链接的点击事件。需要注意的是链接在一个框架中(不是 iframe)并且没有 div。 html结构是:

frameset
    frame with id and name
    frame with id and name
        html
            body
                table
                    tbody
                        tr
                          td
                            <a class='className' href="reference to another jsp to load"/>
...

我可以使用此代码作为示例进入框架以删除所有有效的链接。

$('a',top.frames['frameName'].document).remove(); //This works!

但是,我不知道如何将点击事件处理程序附加到这些链接。我从一些简单的事情开始,例如:

$('a').click(function(){ 
        alert("Click function found!");
    });

并且已经为此工作了很长一段时间,但没有成功。

关于如何做到这一点的任何想法?

决赛:

我做错的事情是使用 document.ready() 来放置我的代码。当我这样移动它时:

$(window).load(function () {
    //$('a',top.frames['myFrame'].document).remove();
    $('a',top.frames['myFrame'].document).bind('click', function(e){
        alert('In myFrame!');
        e.preventDefault();
    });
});

一切正常!

【问题讨论】:

    标签: jquery jsp hyperlink frame


    【解决方案1】:

    如果以下方法有效:

    $('a',top.frames['frameName'].document).remove();
    

    那么应该:

    $('a',top.frames['frameName'].contentDocument).click(function(){  .... });
    

    请记住,要使其正常工作,必须在绑定点击事件时加载框架。

    【讨论】:

    • 这是我尝试的第二件事。使用 firebug,我在控制台中没有看到任何错误,但我从未在此处遇到断点,也没有遇到警报。
    • @JamesDrinkard 是完全加载的框架和绑定到点击事件时 dom 中存在的 a 元素?
    • 只需在控制台中运行该命令,然后单击以查看是否发生了什么事情
    • @JamesDrinkard - 查看我更新的答案,我将其切换为 contentDocument .. 它对我有用
    • 感谢贾斯汀的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多