Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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
如何使javascript函数只工作一次_Javascript_Jquery - Fatal编程技术网

如何使javascript函数只工作一次

如何使javascript函数只工作一次,javascript,jquery,Javascript,Jquery,如何使Javascript函数只工作一次 if (window.location.hash) { $(document).ready(function () { var id = window.location.hash; $(id).trigger('click'); }); $('li').click(function () { $(this).prependTo($(this).pare

如何使Javascript函数只工作一次

    if (window.location.hash) {
        $(document).ready(function () {
        var id = window.location.hash;
        $(id).trigger('click');
    });
        $('li').click(function () {
            $(this).prependTo($(this).parent());
        });
    }
我需要自动点击那个李元素链接用户来的网站。web.com/#2(列表顺序-211345),web.com/#4(列表顺序-4123)。但我想比用户停留在网站与散列url列表元素停留在他们的地方,然后用户点击,例如在3列表元素,他必须停留和他的地方,所以列表顺序(4 1 2 3)。我只需要通过加载页面上的url哈希更改列表顺序。

我解决了它

     if (window.location.hash) {

            $('li').one('click',function () {
                if (!window.run){
            $(this).prependTo($(this).parent());
                    window.run = true;
                }
        });
        $(document).ready(function () {
            var id = window.location.hash;
            $(id).trigger('click');
        });
    }

在您的特定情况下,最简单的解决方案是使用
.one()
,这将在第一次运行处理程序后解除其绑定:

$('li').one('click',function () { ... }
另一种方法是让函数在运行后将自身重新定义为no op。当没有方便的事件处理程序解除绑定时,这在某些情况下非常有用:

var oneTimeFunction = function() {
  console.log("This will only happen once.");
  oneTimeFunction = function() {};
}

我不确定我是否完全理解了您的意图,但请尝试添加
$('li')。关闭('click')在单击手柄中,您想做什么?很难理解我的问题。也许更清楚?那是多余的;
.one
已经确保它不会运行两次,因此没有理由也使用
窗口.run
作为标志。