-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

在所有链接上使用相同的类,将您的消息放入每个链接的数据属性中,然后

$('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 回答