执行.click(函数()只需先点击

Aar*_*iba 4 javascript jquery addclass click removeclass

.click(function()只是在第一次点击时尝试执行,但它总是在点击时执行.

当点击它的作品.more-post-button将添加类loading.main ulshow-more-post.main li该删除后级loading上的setTimeout功能7秒.

JS:

$(".more-post-button").click(function () {

  $('.main ul').addClass('loading');
  $('.main li').addClass('show-more-post');
  setTimeout(function(){
    $('.main ul').removeClass('loading');
  },7000);

});
Run Code Online (Sandbox Code Playgroud)

我的问题是如何只在第一次点击时这样做,而不是每次点击.
提前致谢.

art*_*rtm 8

尝试:

$(".more-post-button").one("click", function () {

  $('.main ul').addClass('loading');
  $('.main li').addClass('show-more-post');
  setTimeout(function(){
    $('.main ul').removeClass('loading');
  },7000);
});
Run Code Online (Sandbox Code Playgroud)

http://api.jquery.com/one/

它只处理一次.


fub*_*bbe 6

为什么把事情复杂化,尝试一个简单的闭包。您也不会污染全局名称空间!演示在这里

(function(){
'use-strict';

var button = document.getElementsByTagName('button')[0];
var myHandler = function() {
    var click = 0;
    return function() {
        if(click === 0) {
            alert('single click');
        }
        click++;
    }
}();


button.addEventListener('click', myHandler, false);
})();
Run Code Online (Sandbox Code Playgroud)

  • Javascript 就是关于闭包的。是什么让你觉得事情很复杂?这个问题也是由 javascript 标记的,jQuery 只是它的一个框架。 (2认同)