Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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
使用jQuery禁用超链接_Jquery_Disable Link - Fatal编程技术网

使用jQuery禁用超链接

使用jQuery禁用超链接,jquery,disable-link,Jquery,Disable Link,但它不起作用 有没有一种简单的方法可以使用jquery禁用超链接?删除href?我宁愿不摆弄你。因此,如果我可以在不删除href的情况下执行此操作,那就太好了。您可以绑定一个返回false的单击处理程序: $('.my-link').attr('disabled', true); 要重新启用它,请取消绑定处理程序: $('.my-link').click(function () {return false;}); 请注意,disabled不起作用,因为它仅用于表单输入 jQuery已经预见

但它不起作用


有没有一种简单的方法可以使用jquery禁用超链接?删除href?我宁愿不摆弄你。因此,如果我可以在不删除href的情况下执行此操作,那就太好了。

您可以绑定一个返回false的单击处理程序:

$('.my-link').attr('disabled', true);
要重新启用它,请取消绑定处理程序:

$('.my-link').click(function () {return false;});
请注意,
disabled
不起作用,因为它仅用于表单输入


jQuery已经预见到了这一点,从jQuery 1.4.3开始提供了一个快捷方式:

$('.my-link').unbind('click');
以及解除绑定/重新启用:

$('.my-link').bind('click', false);

删除
href
属性显然是一条可行之路。如果出于某种原因您以后需要它,我会将它存储在另一个属性中,例如

$('.my-link').unbind('click', false);
这是唯一一种不用编写自定义CSS也能使链接看起来被禁用的方法。仅将单击处理程序绑定为false将使链接看起来像普通链接,但单击它时不会发生任何事情,这可能会让用户感到困惑。如果您要使用单击处理程序路径,我至少也会
.addClass(“链接禁用”)
并编写一些CSS,使与该类的链接看起来像普通文本

$(".my-link").each(function() {
    $(this).attr("data-oldhref", $(this).attr("href"));
    $(this).removeAttr("href");
});
您可以使用:

$('.my-link').click(function(e) { e.preventDefault(); }); 

但是我自己不喜欢使用它,因为它更神秘,尽管它在许多jQuery代码中被广泛使用。

禁用的
属性在我相信的所有HTML元素上都无效,请参阅。这一点和正确的禁用值只是“禁用”。最好的方法是绑定一个返回false的click函数。

我知道这是一个老问题,但似乎仍然没有解决。遵循我的解决方案

只需添加此全局处理程序:

$('.my-link').click(function(e) { return false; }); 
下面是一个快速演示:

您甚至可以添加一点css,为所有具有禁用属性的链接提供不同的样式

e、 g


无论如何,禁用属性似乎对
a
标记无效。如果您喜欢遵循w3c规范,您可以轻松采用html5兼容的
数据禁用属性。在这种情况下,您必须修改前面的代码段并使用
$(this)。下面的数据('disabled')

将用文本替换链接

a[disabled]
{
    color: grey; 
}
编辑:

上面给出的代码只适用于文本超链接,而不适用于图像。当我们尝试使用图像链接时,它不会显示任何图像

要使此代码与图像链接兼容,以下操作将很好

$('a').each(function () {
    $(this).replaceWith($(this).text());
});
//以下给定函数将用图像替换链接,即图像链接
$('a img')。每个(函数(){
var image=this.src;
变量img=$('

说明:在上述给定的代码段中,在第一个代码段中,我们仅用其图像替换所有图像链接。之后,我们用其文本替换文本链接。

在支持()时,有点缺少
指针事件
CSS属性,但它非常简洁:

// below given function will replace links with images i.e. for image links
$('a img').each(function () {
    var image = this.src;
    var img = $('<img>', { src: image });
    $(this).parent().replaceWith(img);
});

// This piece of code will replace links with its text i.e. for text links
$('a').each(function () {
    $(this).replaceWith($(this).text());
});

这也可以很好地工作。它非常简单、精简,并且不需要使用jQuery

function EnableHyperLink(id) {
        $('#' + id).attr('onclick', 'Pagination("' + id + '")');//onclick event which u 
        $('#' + id).addClass('enable-link');
        $('#' + id).removeClass('disable-link');
    }

    function DisableHyperLink(id) {
        $('#' + id).addClass('disable-link');
        $('#' + id).removeClass('enable-link');
        $('#' + id).removeAttr('onclick');
    }

.disable-link
{
    text-decoration: none !important;
    color: black !important;
    cursor: default;
}
.enable-link
{
    text-decoration: underline !important;
    color: #075798 !important;
    cursor: pointer !important;
}

试试:


附加一个包含指针事件的类:non

$(this).prop( "disabled", true );

对于1.4.3或更高版本,您可以使用
$('.my link').bind('click',false);
。从jQuery 1.7开始,
bind()
unbind()
已替换为
on()
off()
。有关更多信息,请参阅。这篇文章提供了使用引导的最简单方法,希望有所帮助。这是我第一次看到有人参考MSDN,W3C链接?!@Zappa,W3C学校与W3C无关。W3C是www.w3.org非常感谢!你刚刚让我不用编辑2400块文本…或学习正则表达式(谁想这么做,对吗?)。如何将链接设置回其默认值?假设我使用$(this).replaceWith($(this).text())禁用了所有链接;但如何将其设置为启用的默认值?删除
href
也会扰乱SEO排名。保留该属性并禁用它将使机器人意识到它是一个链接。我认为这实际上应该是:if($(this).attr('disabled'){e.stopImmediatePropagation();}另外,为了确保动态添加的锚也被禁用,完整代码应该是:$(“body”)。在(“单击”,“a”,函数(e){if($(this).attr('disabled'){e.stopImmediatePropagation();}});(5分钟后无法编辑注释)。我忘记添加:e.preventDefault();可能的重复项“禁用”在链接上不可用。可能在IE中工作,但在其他浏览器中不可用。但这也可以禁用链接所做的任何其他工作。例如,悬停将不起作用。
.my-link { pointer-events: none; } 
function EnableHyperLink(id) {
        $('#' + id).attr('onclick', 'Pagination("' + id + '")');//onclick event which u 
        $('#' + id).addClass('enable-link');
        $('#' + id).removeClass('disable-link');
    }

    function DisableHyperLink(id) {
        $('#' + id).addClass('disable-link');
        $('#' + id).removeClass('enable-link');
        $('#' + id).removeAttr('onclick');
    }

.disable-link
{
    text-decoration: none !important;
    color: black !important;
    cursor: default;
}
.enable-link
{
    text-decoration: underline !important;
    color: #075798 !important;
    cursor: pointer !important;
}
<a href="javascript:void(0)">Link</a>
$(this).prop( "disabled", true );
.active a{ //css
text-decoration: underline;
background-color: #fff;
pointer-events: none;}


$(this).addClass('active');