ページに存在するすべての種類のリンクに対して関数を開きたいです。
例:
.pdf リンクをクリックすると、それが開き、pdf-function が表示されます。.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.
});
ここで示したコードでは、委任イベント モデルを使用して、リンクごとに 1 つのハンドラーをアタッチするのではなく、ドキュメント レベルで 1 つのハンドラーをアタッチします。何らかの理由でリンクごとに 1 つのハンドラーが必要な場合は、$("a").on("click",...)
または$("a").click(...)
.
したがって、これは実際に何をしようとしているのかによって異なります。しかし、ここに私の基本的な提案があります...
あなたが Web ページから来ていると仮定すると (それがリンクの意味であると仮定すると)、それがどのタイプのリンクであるかをトリガーする方法が必要です。非常に簡単に言えば、さまざまなタイプのリンクにクラスを追加して、それらが何であるかを識別することができます。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.
});
...など、どのようなタイプのやり取りやファイルについても同様です。これ以上の情報がなければ、これ以上詳しく説明することはできませんが、アプリケーション内でのクライアント/サーバーのやり取りを理解していれば、全体の接続方法の良い出発点になるはずです。