Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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
Jquery 函数reinitialise()将在调用之前执行_Jquery - Fatal编程技术网

Jquery 函数reinitialise()将在调用之前执行

Jquery 函数reinitialise()将在调用之前执行,jquery,Jquery,在正确调用函数重新初始化()(通过函数重新初始化滚动条())之前,将执行该函数。 有人知道为什么吗 $(document).ready(function () { $('.scrollContainer').jScrollPane(); $('[id^=arr]').click(function (event) { var id = $(this).attr('id'); var index = id.substring(4);

在正确调用函数
重新初始化()
(通过函数
重新初始化滚动条()
)之前,将执行该函数。 有人知道为什么吗

$(document).ready(function () {

    $('.scrollContainer').jScrollPane();

    $('[id^=arr]').click(function (event) {
        var id = $(this).attr('id');
        var index = id.substring(4);
        //alert('Gib ID aus: ' +index);
        var skillDesc = "#skillDescript" + index;

        var arrTo2 = "#arr_" + index + ".arrow2";
        var arrTo1 = "#arr_" + index + ".arrow1";

        //alert('Gib skillDesc aus: ' +skillDesc);
        event.preventDefault();
        if ($(skillDesc).css("display") != "none") {
            $(skillDesc).slideUp(800, reinitializeScrollbar());
            console.log("ROLL IN!");
            $(arrTo2).toggleClass("arrow2", "arrow1");
        } else {
            $(skillDesc).slideDown(800, reinitializeScrollbar());
            console.log("ROLL OUT!");
            $(arrTo1).toggleClass("arrow2");
        }
    });

    function reinitializeScrollbar() {
        $('.scrollContainer').data('jsp').reinitialise();
        console.log("damn you");
    }
});
正确的语法是:

$(skillDesc).slideUp(800, reinitializeScrollbar);
正确的语法是:

$(skillDesc).slideUp(800, reinitializeScrollbar);
使用

使用

尝试设置事件处理程序时正在调用函数:

$(skillDesc).slideUp(800, reinitializeScrollbar());
相反,您只需将函数本身作为参数传递:

$(skillDesc).slideUp(800, reinitializeScrollbar);
尝试设置事件处理程序时正在调用函数:

$(skillDesc).slideUp(800, reinitializeScrollbar());
相反,您只需将函数本身作为参数传递:

$(skillDesc).slideUp(800, reinitializeScrollbar);

您当前正在做的是通过添加
()
立即调用函数。这将立即调用该函数,然后获取该函数调用的结果,并将该值作为回调传递。由于您希望传递函数本身,因此不应调用函数,只需将其作为回调传递:

$(skillDesc).slideUp(800, reinitializeScrollbar);

您当前正在做的是通过添加
()
立即调用函数。这将立即调用该函数,然后获取该函数调用的结果,并将该值作为回调传递。由于您希望传递函数本身,因此不应调用函数,只需将其作为回调传递:

$(skillDesc).slideUp(800, reinitializeScrollbar);

这很可能是因为您实际上正在调用
reinitializeScrollbar()
函数,而您希望将其分配为回调

这应该解决这个问题:

$(document).ready(function () {

    $('.scrollContainer').jScrollPane();

    $('[id^=arr]').click(function (event) {
        var id = $(this).attr('id');
        var index = id.substring(4);
        //alert('Gib ID aus: ' +index);
        var skillDesc = "#skillDescript" + index;

        var arrTo2 = "#arr_" + index + ".arrow2";
        var arrTo1 = "#arr_" + index + ".arrow1";

        //alert('Gib skillDesc aus: ' +skillDesc);
        event.preventDefault();
        if ($(skillDesc).css("display") != "none") {
            $(skillDesc).slideUp(800, reinitializeScrollbar);
            console.log("ROLL IN!");
            $(arrTo2).toggleClass("arrow2", "arrow1");
        } else {
            $(skillDesc).slideDown(800, reinitializeScrollbar);
            console.log("ROLL OUT!");
            $(arrTo1).toggleClass("arrow2");
        }
    });

    function reinitializeScrollbar() {
        $('.scrollContainer').data('jsp').reinitialise();
        console.log("damn you");
    }
});

这很可能是因为您实际上正在调用
reinitializeScrollbar()
函数,而您希望将其分配为回调

这应该解决这个问题:

$(document).ready(function () {

    $('.scrollContainer').jScrollPane();

    $('[id^=arr]').click(function (event) {
        var id = $(this).attr('id');
        var index = id.substring(4);
        //alert('Gib ID aus: ' +index);
        var skillDesc = "#skillDescript" + index;

        var arrTo2 = "#arr_" + index + ".arrow2";
        var arrTo1 = "#arr_" + index + ".arrow1";

        //alert('Gib skillDesc aus: ' +skillDesc);
        event.preventDefault();
        if ($(skillDesc).css("display") != "none") {
            $(skillDesc).slideUp(800, reinitializeScrollbar);
            console.log("ROLL IN!");
            $(arrTo2).toggleClass("arrow2", "arrow1");
        } else {
            $(skillDesc).slideDown(800, reinitializeScrollbar);
            console.log("ROLL OUT!");
            $(arrTo1).toggleClass("arrow2");
        }
    });

    function reinitializeScrollbar() {
        $('.scrollContainer').data('jsp').reinitialise();
        console.log("damn you");
    }
});

在本例中,这并没有什么区别,但可能应该提到的是,调用
重新初始化滚动条
的方式有所不同。在第一个示例中,
重新初始化滚动条
的上下文(
)是
滑动窗口
的元素,第二个示例中是
窗口
对象。在本例中,它没有区别,但是可能应该提到的是,
reinitializeScrollbar
的调用方式有所不同。在第一种情况下,
reinitializeScrollbar
的上下文(
this
)是
slidedUp
的元素,第二种情况下是
窗口
对象。