根据链接定义函数



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

示例:

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

但我想要一种不用编辑链接的方法。

使用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(...)

所以,这实际上取决于你想做什么。但是,这是我的基本建议。。。

假设你来自一个网页(假设这就是你所说的链接),你必须有一种方法来触发它是什么类型的链接。很简单,你可以在不同类型的链接中添加一个类来识别它们是什么。您的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.
});

对于任何类型的交互和文件,等等。现在,如果没有更多的信息,我无法了解更多的细节,但如果你了解应用程序中的客户端/服务器交互,这应该会为你提供一个很好的起点,让你了解如何将其连接起来。

最新更新