-1

現在、3 つの異なるリンクに対して 3 つのダイアログがあります。これをより少ないコードで記述できますか?

js

$("a.link1").click(function(event){
    var msg = confirm('link 1, or cancel');

    if(msg){
        // go to destination
        return true;
    }else{
        // cancel
        return false;
    }
});

$("a.link2").click(function(event){
    var msg = confirm('link 2, or cancel');

    if(msg){
        // go to destination
        return true;
    }else{
        // cancel
        return false;
    }
});

$("a.link3").click(function(event){
    var msg = confirm('link 3, or cancel');

    if(msg){
        // go to destination
        return true;
    }else{
        // cancel
        return false;
    }
});

ありがとう

4

4 に答える 4

4

すべてのリンクで同じクラスを使用し、メッセージを各リンクの data-attribute に入れてから、

$('a.link').click(function() { 
  return confirm($(this).data('message'));
}

HTML:

<a href="wherever.com" data-message="Are you sure?">Go to wherever</a>
于 2013-03-07T15:16:37.433 に答える
2

属性セレクターとワイルドカードを使用してイベントをバインドし、いくつかのパターンを使用して確認のリンク メッセージを作成できます。

$("a[class^=link]").click(function(event){
    var msg = confirm('link 1, or cancel');

    if(msg){
        // go to destination
        return true;
    }else{
        // cancel
        return false;
    }
});

パターン付きのリンクがない場合は、配列を使用してリンクを保存できます

arr = {"link1", "link2", "link3"};
$("a[class^=link]").click(function(event){
    classIndex = this.className.replace('link', '')  

    var msg = confirm(arr[classIndex-1]+ ', or cancel');

    if(msg){
        // go to destination
        return true;
    }else{
        // cancel
        return false;
    }
});
于 2013-03-07T15:12:58.017 に答える
0
$('a[class^=link]').click(function() {

    if ( confirm($(this).attr('class') + ', or cancel') ) {   
        return true;
    }

    return false;
});

または、テキスト「リンク」と番号の間にスペースが必要ですか?

于 2013-03-07T15:14:24.640 に答える
0

はい、次のようなことができます:

$("a.confirmlink").click(function(){
   return confirm("Go to " + $(this).attr("href") + "?");
});
于 2013-03-07T15:17:35.840 に答える