6

为什么我不能a用 jquery 更改标签的 CSS?例如,

html,

<a href="#">1</a>
<a href="">2</a>
<a href="http://website.com/#/home/about/">3</a>
<a href="http://website.com/home/about/">4</a>

链接 1 和 2 不可点击,所以我想删除指针光标。

jQuery,

$("a").click(function(e){
    if($(this).attr("href") == "#" || $(this).attr("href") == "") {
        alert("this is non-clickable");
        $(this).css({cursor:"default"});
        e.preventDefault();   
    }
    else{
        alert($(this).attr("href"));
        $(this).css({cursor:"pointer"});
        e.preventDefault();   
    }
});

可能吗?

jsfiddle

4

3 回答 3

11

如果你愿意,你可以简单地用 CSS 做到这一点

a[href="\#"], a[href=""] {
    cursor: default;
}
/* I've used an element[attr] selector here which will select all a tags 
   with this combination, if you want to target specific a tags, 
   wrap them in an element with a class and you can than refer as 
   .class a[href]... */

演示

如果你想禁用链接,你也可以使用 CSSpointer-events: none;属性来实现

演示 2(如果 JS 被禁用,它将帮助您,这不会提醒消息,但它会帮助您禁用您正在尝试执行的事件)

于 2013-07-20T07:52:39.470 回答
3

您的错误在您的 jquery css 中。您需要在 css 周围加上引号,您的 js 应该如下所示:

$("a").click(function(e){
    if($(this).attr("href") == "#" || $(this).attr("href") == "") {
        alert("this is non-clickable");
        $(this).css({'cursor' :"default"});
        e.preventDefault();   
    }
    else{
        alert($(this).attr("href"));
        $(this).css({'cursor':"pointer"});
        e.preventDefault();   
    }
});

您也可以使用 addClass 方法,然后在 css 中有一个没有 href 的样式

于 2013-07-20T07:51:49.620 回答
1

尝试换行

形式

$(this).css({cursor:"default"});

$(this).css('cursor','default');

如果您遇到任何问题,请告诉我

于 2013-07-20T07:52:36.987 回答