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

发布于 2024-12-29 08:34:05 字数 305 浏览 0 评论 0原文

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

我有一个 javascript 函数,它将根据 URL 决定是否在 iframe 或新选项卡中打开链接。但问题是如何让所有链接都调用该 javascript 函数?

我尝试过:

<base target= processurl()/>

有什么想法吗?

谢谢

编辑: JQUERY 方法效果很好。但它只适用于一个链接?当我第一次单击链接时,它会正确调用该函数。但此后我点击的任何其他链接都没有任何反应。

I load different types of content through AJAX on my website.

I have a javascript function that will decide whether to open the link in an iframe or new tab based on the URL. But the question is how do I make all links call that javascript function?

I tried:

<base target= processurl()/>

Any ideas?

Thanks

EDIT:
The JQUERY method works great. But it only works for one link? When I click a link the first time, it calls the function correctly. But any other links I click on after that, nothing happens.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我喜欢麦丽素 2025-01-05 08:34:05

使用 jQuery < 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 ){
    ....
} );

using jQuery < 1.7:

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

    // do stuff
} );

Note that jQuery 1.7 prefers the use of .on instead of .live:

$( document ).on( 'click', 'a', function( ev ){
    ....
} );
开始看清了 2025-01-05 08:34:05

有(至少)两种方法可以解决此问题(取决于它如何与您的 Ajax 代码配合):

  1. 使用通用函数处理页面上的所有点击,该函数取消默认的点击导航,然后替换它自己的点击导航以在 iframe 中加载、新窗口等。
  2. 在页面加载时处理页面上的所有链接,并根据需要设置 target 属性。

所以第一种方法:

$(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() 方法 适用于jQuery 版本 >= 1.7,因此对于较旧的 jQuery,请使用 .delegate() 方法< /a> 或对于真正旧的 jQuery 使用 .live() 方法。

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

$(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.
    });
});

There are (at least) two ways you could approach this (depending on how it fits in with your Ajax code):

  1. Handle all clicks on the page with a common function that cancels the default click navigation and then subsitutes its own to load in iframe, new window, etc.
  2. Process all links on the page when the page loads, setting the target attribute as appropriate.

So the first way:

$(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
});

Noting that the .on() method applies from jQuery version >= 1.7, so for older jQuery use the .delegate() method or for really old jQuery use the .live() method.

The second way (assumes links all exist when page is first loaded):

$(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.
    });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文