jquery:只要页面加载,函数就会自动运行?

时间:2014-07-30 09:24:14

标签: jquery onclick bootstrap-modal

当我加载.jsp页面时,secondFunction()会自动运行(每当我加载页面时会弹出一个模态)。即使我使用了 callback()属性,要使secondFunction()仅在firstFunction()完​​成时运行,它每次加载页面时都会自动运行。我只希望它在我按下按钮时运行,并且当firstFunction()完​​成时。有什么想法吗?

HTML code:

<a class="open-buttonedModal icon-info-sign"  onclick="firstFunction()"></a>

Jquery的:

        function firstFunction(callback) {
            $('td').click(function() {

                var emp = $(this).prev().prev().prev().prev().prev().prev().prev().prev().prev().prev().text();
                var url = "timesheet.jsp?ename=" + emp;
                $(location).attr('href', url);

            });

            callback();

        }
        function secondFunction() {

            $('#buttonedModal').modal('show');

        }

        firstFunction(function() {
            secondFunction();
        });

1 个答案:

答案 0 :(得分:0)

.click()函数绑定一个事件处理程序,不会等待它实际运行。您应该将callback()放在事件处理程序的末尾:

    function firstFunction(callback) {
        $('td').click(function() {
            // ... other clicky stuff

            callback();
        });

    }

仅在页面加载后运行一次,并且在单击按钮后,使用单独的事件处理程序.one()

   function firstFunction(callback) {
        $('td').click(function() {
            // ... other clicky stuff
        }).one('click', function() {
            callback(); // can also be used without the function() {} wrapper
        });

    }

此外,为了避免将来出现无法解密的错误消息,您可以在尝试运行之前检查callback确实是一个函数:

 if(typeof callback === 'function') {
      callback();
 } else {
      console.log('callback is not a function'); // possibly throw an error, too?
 }