ボタン/リンク/mailto:のあるテーブルがあり、行をダブルクリックするとテーブルの最後のリンクにユーザーを誘導するデフォルトのダブルクリック関数を作成しました。
テーブルの99%には、最後の列に[編集]ボタンがあります。
$('table:not(.noDoubleClick) tr td').dblclick(function() {
var linkEl = $(this).parents('tr').find('td:last-child a');
if(!linkEl.length){
return false;
}
if (linkEl.attr('href') && linkEl.attr('onclick') === undefined && !linkEl.hasClass("popme")) {
document.location = linkEl.attr('href');
} else {
linkEl.click();
}
});
これは、最後の列がmailtoを含む電子メールアドレスであるまれなテーブルができるまでは正常に機能します。
Q: hrefが相対/絶対リンクのみであるかどうかを確認するにはどうすればよいですか。これにより、mailto:および標準URLではないその他のリンクが除外されます。
私は次のようなことができることを知っています:linkEl.attr('href').substring(0, 7) == "mailto:"
mailtoを具体的にテストするためですが、除外されるさまざまなプロトコルをテストするIFの負荷なしでこれを行うためのより良い方法があります。
@epascarelloからの実用的なソリューションで更新します:
$('table:not(.noDoubleClick) tr td').dblclick(function(e) {
var linkEl = $(this).parents('tr').find('td:last-child a');
var linkElHref = linkEl.attr('href');
// Check if has href and http protocol
if(!linkElHref.length || this.protocol.indexOf("http") !== 0){
e.preventDefault();
return false;
}
if (linkElHref && linkEl.attr('onclick') === undefined && !linkEl.hasClass("popme")) {
document.location = linkElHref;
} else {
linkEl.click();
}
});