-1

我想为我页面上的每种现有链接打开一个功能。

例子:

当我单击 .pdf 链接时,它会打开并具有 pdf 功能。如果单击 .mp3 链接,它会打开一个播放器等

但我想要一种无需编辑链接的方法。

4

2 回答 2

0

使用 jQuery,您可以轻松地将处理程序附加到页面的所有链接。在该处理程序中,您可以测试href并采取任何适当的操作。如果您想阻止某些类型的链接的默认链接导航,只需调用event.preventDefault()这些类型:

$(document).on("click","a", function(e) {
   if (/\.pdf$/i.test(this.href)) {
       pdfFunction();
   } else if (/\.mp3$/i.test(this.href)) {
       playMP3(this.href);
       e.preventDefault();
   } // etc.
});

我展示的代码使用委托事件模型,以便在文档级别附加一个处理程序,而不是为每个链接附加一个处理程序。如果出于某种原因您想要每个链接一个处理程序,您可以执行$("a").on("click",...)$("a").click(...)

于 2012-12-06T05:14:55.973 回答
0

所以,这真的取决于你想要做什么。但是,这是我的基本建议......

假设您来自网页(假设这就是链接的意思),您必须有一种方法来触发它是什么类型的链接。非常简单,您可以为不同类型的链接添加一个类来识别它们是什么。您的 HTML 可能看起来像这样:

<a href="http://path/to/file.mp3" class="mp3link">Some Song</a>
<a href="http://path/to/file.pdf" class="pdflink">Some PDF</a>
<a href="http://path/to/file2.pdf" class="pdflink">Some Other PDF</a>

现在,您要触发链接类型。您如何实际处理发生的事情取决于您是否可以在客户端完成所有操作,或者您是否需要返回服务器进行更多工作(同样,您必须决定要做什么)。您可以使用 JavaScript(特别是 jQuery 库)来触发这些类。就像是...

$('.mp3link').on('click', function(e) {
  e.preventDefault(); // stop the link from being clicked

  // Define what you want to do here - ajax call back to the server or fire
  // up a client-side media player, or whatever.
});

$('.pdflink').on('click', function(e) {
  e.preventDefault(); // stop the link from being clicked

  // Define what you want to do here.
});

...等等,适用于您拥有的任何类型的交互和文件。现在,如果没有更多信息,我无法更详细地介绍,但是如果您了解应用程序中的客户端/服务器交互,那么这将为您提供一个很好的起点,让您了解如何完全连接它。

于 2012-12-06T05:16:23.120 回答