1

ボタン/リンク/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();
    }
});
4

2 に答える 2

3

リンクのプロパティを使用してプロトコルを検索できます。

var theProtocol = linkEl.prop("protocol");
var isHttp = linkEl.prop("protocol").indexOf("http") === 0;
于 2012-10-11T13:12:49.697 に答える
2

テキストソリューションの場合、次の正規表現を使用できます。

var x = new RegExp('^([^:/?#]+:)?(//[^/?#]*)?([^?#]*)');
x.match(url);

2番目のメモリ位置がまたはである場合、またはundefinedおそらく通常のURLを処理している場合。http:https:

于 2012-10-11T13:15:35.427 に答える