我有这个正在侦听切换开关被更改并调用一些AJAX:

   $('#notificationStatusBtn').on('switch-change', function(e, data) {
        if(data.value == true){
            $.get("myURL");
        }else{
            $.get("myURL");
        }
    })


这很好用,但我不太喜欢参数样式中的函数。因此,我尝试将其折光为:

    $(document).ready(initListeners());

    //Intialize button listeners
    function initListeners(){
        $('#notificationStatusBtn').on('switch-change', setNotificationStatus(e, data));
    }

    function setNotificationStatus(e, data){
        if(data.value == true){
            $.get("muURL",function(data,status){
                    alert("Data: " + data + "\nStatus: " + status);
            });
        }else{
            $.get("muURL",function(data,status){
                    alert("Data: " + data + "\nStatus: " + status);
            });
        }


但是我重新编写的代码无法正常工作。

最佳答案

您的回调在setNotificationStatus中不正确。回调是对函数的引用,因此不需要变量e和数据。

尝试删除它们,这样您就可以:

$('#notificationStatusBtn').on('switch-change', setNotificationStatus);


您还在文档准备处理程序上犯了同样的错误:

$(document).ready(initListeners());


成为:

$(document).ready(initListeners);


调试时不要害怕使用警报语句,它有时可以用作快速而肮脏的检查。如果要保留调试信息,可以移至console.log。

HTH

09-17 19:02
查看更多