HTML JS - 通过 CSS 类禁用点击可能性

Posted

技术标签:

【中文标题】HTML JS - 通过 CSS 类禁用点击可能性【英文标题】:HTML JS - Disable clicking possibility through the CSS class 【发布时间】:2021-03-10 12:19:57 【问题描述】:

绅士你好

请问如何通过css类禁用点击行为onclick?

我不能在 html 元素中使用 ID,因为我无法在代码中插入任何 ID,所以我需要使用 Class 来实现魔法。

在我所有的尝试中,没有一个仍然有效。

点击后我需要禁用的元素和 CSS 类:

<label class="inner all disabled reserved my_numbers">
 <span class="p5_effect_tooltip_b top">
     <span class="numero">999999<br><small>pending<br>payment</small></span>
     <span class="p5_custom_tooltip_b">Pre-Reserved: Jim</span>
 </span>
</label>

班级:label.inner.all.disabled.reserved.my_numbers

1°第一次尝试:

jQuery(document).ready(function() 
    $("#inner.all.disabled.reserved").click(function() 
        return false;
    );
);

2° 第二次尝试:

$(document).ready(function() 
    $(".label.inner.all.disabled.reserved").click(function() 
        $("label").off("click");
    );
);

3° 第三次尝试:

$(document).ready(function() 
    $("#inner.all.disabled.reserved").click(function() 
        return false;
    );
);

4°尝试:

$('#inner.all.disabled.reserved.my_numbers').disabled = true

【问题讨论】:

要禁用仅使用 CSS 的点击,请尝试 pointer-events: none; inner.all.disabled.reserved - 这是类,但您指定为 id 查看浏览器开发工具控制台上出现的任何错误消息。 @ozgur,感谢您的帮助.....但是我必须禁用单击行为并保持悬停行为。鼠标悬停在元素上时,工具提示必须继续工作。有了这个指针事件属性,所有的悬停事件都将被禁用。 @PaulodoPorto 对不起,我没有注意到悬停的必要性 【参考方案1】:

我发现最好使用事件。您可以使用.preventDefault() 来停止事件动作。

例子:

$(function() 
  function preventClick(e) 
    e.preventDefault();
    console.log(e.target.nodeName + " Click Prevented");
    return false;
  
  $("label.inner.all.disabled.reserved").click(preventClick).children().click(preventClick);
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label class="inner all disabled reserved my_numbers">
 <span class="p5_effect_tooltip_b top">
     <span class="numero">999999<br><small>pending<br>payment</small></span>
     <span class="p5_custom_tooltip_b">Pre-Reserved: Jim</span>
 </span>
</label>

【讨论】:

【参考方案2】:

我特地注册了console.log(),这样你就可以看到点击只能点击一次。

有必要吗?

$(".inner.all.disabled.reserved").click(function()
  console.log('This message will not show!');
).off('click');
.inner.all.disabled.reserved:hover 
  color: green;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label class="inner all disabled reserved my_numbers">
 <span class="p5_effect_tooltip_b top">
     <span class="numero">999999<br><small>pending<br>payment</small></span>
     <span class="p5_custom_tooltip_b">Pre-Reserved: Jim</span>
 </span>
</label>

【讨论】:

我测试了上面的代码,正如你所说,可以单击一次元素。之后,元素不再可点击,工具提示完全消失。我连一次都不能点击元素明白吗?该元素必须是不可点击的,但保留悬停效果。非常感谢!! @PaulodoPorto,我更新了答案。现在悬停工作正常,但点击事件不起作用。请检查。 ...我故意放console.log('This message will not show!') 以确保该元素不可点击。 我可以这么说,魔法还没有发生。现在当我点击元素时我有绿色字体,但元素仍然是 可点击 : ) 我特地为你创建了一个带有悬停的规则,这样你就可以看到悬停的活动。这是一个测试悬停。但是元素不能点击,因为我禁用了点击。查看我的jquery 代码。如果元素是可点击的,您将收到一条控制台消息 - console.log('This message will not show!')

以上是关于HTML JS - 通过 CSS 类禁用点击可能性的主要内容,如果未能解决你的问题,请参考以下文章

html+css移动端禁用长摁保存图片

js怎么禁用一个事件

如何通过 html/js 在 Firefox 中禁用 Pip(画中画)?

阻止click点击事件

.htaccess:(YUI)禁用Etag,压缩字体,压缩HTML/CSS/JS

安卓html元素被点击时产生的边框怎么去掉