javascript - 避免多次点击导航栏 html/javascript

标签 javascript jquery html css

我的 html 页面上有一个导航栏。当用户点击一个元素时,我更改了一个 div 的内容。问题是,如果用户快速连续多次单击某个元素,div 的内容也会多次更改。 我想要的是当用户多次快速点击一个元素时,只改变一次内容。

感谢任何帮助。

编辑:

我正在使用带有 onclick 属性的 Bootstrap 菜单来相应地更改一些内容。

HTML

<ul class="nav nav-tabs">
    <li><a href="#" onclick="changeContent(this)">Home</a></li>
    <li><a href="#" onclick="changeContent(this)">Menu 1</a></li>
    <li><a href="#" onclick="changeContent(this)">Menu 2</a></li>
    <li><a href="#" onclick="changeContent(this)">Menu 3</a></li>
</ul>

JS

function changeContent(item){
    //changing parent content-just for demo
    $(this).parent.html("Some content");
}

所以如果用户快速多次点击一个元素,内容也会随着每次点击而改变多次。 我希望内容仅更改一次以进行多次快速点击。

最佳答案

one click per second. This is to avoid user clicking like crazy.

  1. 使用 removeAttr 删除内联 onclick 属性
  2. 使用 setTimeout 在 x 间隔后重置属性

function changeContent(elem, num) {
  var that = $(elem);
  that.parent().append("Some content"+num);

  that.removeAttr('onclick');
  setTimeout(function() {
    that.attr('onclick', 'changeContent(this,'+num+')');
  }, 1000);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>

<ul class="nav nav-tabs">
  <li><a href="#" onclick="changeContent(this, 123)">Home</a> 
  </li>
  <li><a href="#" onclick="changeContent(this, 432)">Menu 1</a> 
  </li>
  <li><a href="#" onclick="changeContent(this, 545)">Menu 2</a> 
  </li>
  <li><a href="#" onclick="changeContent(this, 765)">Menu 3</a> 
  </li>
</ul>

关于javascript - 避免多次点击导航栏 html/javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30802193/

相关文章:

javascript - 使用 AngularJS 选择的占位符

javascript - 如何在javascript类中制作数组?

Javascript 在不改变 div 高度和宽度的情况下将图像添加到 div?

java - jQuery UI 选项卡中未捕获的异常 : Mismatching fragment identifier

javascript - 如何将事件绑定(bind)到模态对话框上的组件?

javascript - 垂直展开元素以填充

html - CSS:半透明文本在半透明上:伪元素之后

javascript - 使用cueVideo 时YouTube 缩略图模糊

javascript - 悬停效果仅适用于字母(而非容器)

javascript - 合并和排序两个 Parse 对象数组