在正确调用函数reinitialise()
之前(通过函数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");
}
});
答案 0 :(得分:3)
当您尝试设置事件处理程序时,您正在调用函数:
$(skillDesc).slideUp(800, reinitializeScrollbar());
相反,您应该将函数本身作为参数传递:
$(skillDesc).slideUp(800, reinitializeScrollbar);
答案 1 :(得分:2)
您当前正在做的是通过添加()
立即调用该函数。这将做的是立即调用该函数,然后获取该函数调用的结果,并将该值作为回调传递。由于您想要传递函数本身,因此不应该调用该函数,只需将其作为回调函数传递:
$(skillDesc).slideUp(800, reinitializeScrollbar);
答案 2 :(得分:1)
正确的语法是:
$(skillDesc).slideUp(800, reinitializeScrollbar);
答案 3 :(得分:0)
使用
$(skillDesc).slideUp(800, reinitializeScrollbar);
或
$(skillDesc).slideUp(800, function(){ reinitializeScrollbar() });
答案 4 :(得分:0)
这很可能是因为您实际上正在调用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");
}
});