从Jquery中删除一个元素

时间:2014-08-28 19:22:54

标签: jquery css mailto

我的页面之间有一个加载器。 单击任何链接时脚本都有效。 但我不希望在EMAIL LINK(mailto)中执行此操作。 如何避免为邮件链接执行此脚本?

var speed = 'speed'; 

$(window).load(function() {
    $(".loader").fadeOut(speed, function() {
        $('a[href], button[href]').click(function(event) {
            var url = $(this).attr('href');
            if (url.indexOf('#') == 0 || url.indexOf('javascript:') == 0) return;
            event.preventDefault();
            $(".loader").fadeIn(speed, function() {
                window.location = url;
            });
        });
    });
}); 

2 个答案:

答案 0 :(得分:3)

使用:not()选择器和[name^="value"](属性启动)选择器。

$('a[href], button[href], a:not([href^=mailto])').click(function(event) {
    ...
});

答案 1 :(得分:1)

您可以使用:not选择器或not()方法排除元素,但您必须在当前选择中执行此操作,如$('a[href]:not([href^="mailto:"])')$('a[href], button[href]').not('[href^="mailto:"]'), Kristoffer发布的版本无法工作。

$(function() {
    var speed = 'slow'; 

    $(".loader").fadeOut(speed, function() {
        $('a[href]:not([href^="mailto:"])').on('click', function(event) {
            event.preventDefault();

            var url = $(this).attr('href');

            if (url.indexOf('#') !== 0 && url.indexOf('javascript:') !== 0) {

                $(".loader").fadeIn(speed, function() {
                    window.location = url;
                });
            }

        });
    });
});