Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 没有类的元素上的jquery单击事件_Javascript_Jquery - Fatal编程技术网

Javascript 没有类的元素上的jquery单击事件

Javascript 没有类的元素上的jquery单击事件,javascript,jquery,Javascript,Jquery,我如何确保此href元素是将触发“click”事件的元素,除非它没有“disablelink”类 不处理: <a class="iconGear download disablelink" href="#">Download</a> 为什么不检查锚点被单击的时间,如果它有类,它将返回什么也不做,我想这将是更可读的代码。您可以这样做: $("a.download").click(function(e) { if($(this).hasClass("disablel

我如何确保此href元素是将触发“click”事件的元素,除非它没有“disablelink”类

不处理:

<a class="iconGear download disablelink" href="#">Download</a>

为什么不检查锚点被单击的时间,如果它有类,它将返回什么也不做,我想这将是更可读的代码。

您可以这样做:

$("a.download").click(function(e) {
    if($(this).hasClass("disablelink")) {
        return false;
    }
    // Normal code
    alert('in');
    e.preventDefault();
});

首先,这可能不起作用,因为一些链接动态添加了disablelink,并且在它们已经绑定了click处理程序之后

其次,您应该在click处理程序中检查该类,如下所示:

$("a.download").click(function (e) {
    if($(this).hasClass('disablelink')){
       e.preventDefault();
       // link is disabled
    }else{
       alert('in');
       // link is active
    } 
});
这应该起作用:

$("a.download:not('.disablelink')").click(function (e) {
    alert('in');
    e.preventDefault();
});
如果动态添加
disablelink
类:

$(document).on('click', "a.download:not('.disablelink')", function (e) {
    alert('in');
    e.preventDefault();
});

检查此演示:

如果还有什么大不了的?如果某个表达式是真的,你要求做某事。。。只是没有if语句…什么?我不知道你的意思。如果他动态添加disablelink类,这将不起作用……加上OP已经使用的语句完全相同,只是速度较慢。@Rodik-添加了一个即使动态添加类也应该起作用的变体。@jAndy-same:扩展为“是”(即使这是sinlge选择器版本)。但是慢一点?is
:not
慢。not()
?@techfoobar:在大多数情况下,使用诸如
:not
之类的内联选择器语句比它们的函数变体慢。仅仅因为它将调用Sizzle来减少/过滤结果集,而函数将只
.slice()
/
.filter()
列表。看见
$("a.download").click(function (e) {
    if($(this).hasClass('disablelink')){
       e.preventDefault();
       // link is disabled
    }else{
       alert('in');
       // link is active
    } 
});
$("a.download:not('.disablelink')").click(function (e) {
    alert('in');
    e.preventDefault();
});
$(document).on('click', "a.download:not('.disablelink')", function (e) {
    alert('in');
    e.preventDefault();
});