如何让javascript函数只运行一次

时间:2017-05-11 09:37:37

标签: javascript jquery

如何使Javascript功能只工作一次?

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

我需要自动点击链接用户访问网站的那个li元素。 web.com/#2(list order - 2 1 3 4 5),web.com /#4(list order - 4 1 2 3)。但我希望比用户留在网站上的哈希网址列表元素留在他们的地方然后用户点击例如他必须留在3列表元素和他的位置所以列表顺序(4 1 2 3)。我只需要在加载页面上通过url hash更改列表顺序。

2 个答案:

答案 0 :(得分:0)

我解决了它

  $scope.docDownload = function(docName){
    alert("docDownload");
     $http.get("processRequest.jsp?requestType=docDownload&strDocname="+docName).then(function(response) {

           var byteArray = response.data[0].byFileName;
           var blob = new Blob([byteArray], { type: response.data[0].strMimeType});
            if (window.navigator && window.navigator.msSaveOrOpenBlob) {
                window.navigator.msSaveOrOpenBlob(blob);
            }
            else {
                var objectUrl = URL.createObjectURL(blob);
                window.open(objectUrl);
            }
  });
}

答案 1 :(得分:0)

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

$('li').one('click',function () { ... }

另一种方法是让函数在运行后重新定义为无操作。在某些情况下,当没有方便的事件处理程序解除绑定时,这可能很有用:

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