完全禁用一个元素,包括在点击动作时调用其他javascript函数的链接

disable an element completely including links calling other javascript functions on click action

本文关键字:调用 其他 链接 函数 javascript 包括 元素 一个      更新时间:2023-09-26
<li class=" active">
<input class="check-shopby" type="checkbox" onclick="$(this).next().click()" checked="checked">
    <a class="checked" href="http://mysite/~dev433/products//cooking/cook-tops.html" onclick="$(this).previous().checked = false;" style="cursor: pointer;">
        <img width="150" alt="" src="site/media/wysiwyg/attribute_Sets_images/Fagor-CE9-20-1.jpg">
        <span> Electricity (74) </span>
    </a>
    <a onclick="otherjavascriptfunction" href="/somewhere">link</a>
</li>

好了,这是我的内容在一个li项目,当我去在某些条件下,我希望它(li项目本身和所有其他可点击的项目)是完全不可点击的,如果可能的话,一些不可点击的(禁用)标志。

这就是我所尝试的,但它取代了我的内容,$("div li a").replaceWith(function() { return $(this).text(); });

你可以在captureMode中添加clickEventListener来监听li元素

如果为true,则useCapture表示用户希望初始化捕捉。初始化捕获后,指定类型的所有事件会在分派之前分派给已注册的监听器吗到DOM树中它下面的任何EventTargets。事件是通过树向上冒泡不会触发侦听器指定使用捕获。

var disableClicks = document.getElementsByClassName("disable-inner-clicks");
disableClicks.forEach(function(element){
   element.addEventListener('click', function(e){
      e.preventDefault();
      e.stopPropagation();
   }, true);
});

然后对于任何你想要禁用点击的元素,只需添加class = disable-inner-clicks

<li class="active disable-inner-clicks">
  ....
</li>

无论里面有什么内容,单击都是禁用的,当满足条件时,只需将类添加到元素

解决方案很简单。设置所有子节点禁用,并删除点击事件。

$('li.active *').prop('disabled', true).off('click');