如何使网页上的所有链接调用javascript函数?

时间:2012-01-26 22:49:16

标签: javascript jquery html hyperlink

我在网站上通过AJAX加载了不同类型的内容。

我有一个javascript函数,可以决定是否根据URL打开iframe或新标签中的链接。但问题是如何让所有链接调用javascript函数?

我试过了:

<base target= processurl()/>

有什么想法吗?

由于

编辑: JQUERY方法效果很好。但它只适用于一个链接?当我第一次点击链接时,它会正确调用该功能。但是之后我点击的任何其他链接都没有发生。

2 个答案:

答案 0 :(得分:4)

使用jQuery&lt; 1.7:

$( 'a' ).live( 'click', function( ev ){
    ev.preventDefault(); // stop normal click on link

    // do stuff
} );

请注意,jQuery 1.7更喜欢使用.on而不是.live

$( document ).on( 'click', 'a', function( ev ){
    ....
} );

答案 1 :(得分:1)

有(至少)两种方法可以解决这个问题(取决于它如何适应您的Ajax代码):

  1. 处理页面上的所有点击,其中包含取消默认点击导航的常用功能,然后将其自身替换为在iframe,新窗口等中加载。
  2. 在页面加载时处理页面上的所有链接,并根据需要设置target属性。
  3. 所以第一种方式:

    $(document).on("click", "a", function(e) {
       // stop default navigation
       e.preventDefault();
    
       // 'this' is the particular 'a' that was clicked
       var url = this.href;
    
       // process url somehow as desired to decide whether to open it
       // in new window, or iframe or to replace current page
    });
    

    注意.on() method适用于jQuery版本&gt; = 1.7,因此对于较旧的jQuery使用.delegate() method真正的旧jQuery使用.live() method

    第二种方式(假设首次加载页面时所有链接都存在):

    $(document).ready(function() {
        $("a").each(function() {
            var url = this.href;
    
            // process url somehow and set the target attribute as appropriate
            // e.g. for a new window
            this.target = "_blank";
            // or for an iframe
            this.target = "nameofiframe"
            // etc.
        });
    });