我对jQuery有一个奇怪的问题。
我有一个函数,它在<a>
标记的事件上执行。
link.click(someAction);
在动作中,我修改了另一个div元素,我只需设置一些CSS参数并修改类。
这可以按预期工作。
现在,我想用bool参数展开someAction
我想我现在可以按照以下方式调用该方法:
link.click(function () {
someAction(true);
});
不幸的是,这不起作用。我不明白为什么。
该方法被调用,但CSS和&amp;课程根本不会改变。
然后再次使用link.click(someAction);
调用完全相同的方法。
谁能告诉我为什么?
var openPopover = function( showOverlay ){
if (typeof showOverlay === "undefined" || showOverlay === null) showOverlay = true;
if (showOverlay) {
// Add transparent overlay
overlay.show();
}
// Select popover next to the clicked item
popover = $(this).next("div.popover");
// It positioned underneath the clicked item, with the spacing above
// Display the popover
popover.show();
// Reset classes
popover.removeClass("hide-animation");
popover.addClass("show-animation");
var animationEnd = function() {
$(overlay).off("webkitTransitionEnd");
$(overlay).off("oTransitionEnd");
$(overlay).off("transitionend");
};
// Add animation did end observer
$(overlay).on("webkitTransitionEnd", animationEnd);
$(overlay).on("oTransitionEnd", animationEnd);
$(overlay).on("transitionend", animationEnd);
// Run animations
popover.addClass("shown");
overlay.addClass("shown");
// If the browser doesn't support css3 animations, we call it manually
if (!supportsCSSAnimations) {
setTimeout(animationEnd, animationDuration);
}
};
selectButton.hover(openPopover); // Opens the popover correctly
selectButton.hover(function () {
openPopover(true); // Doesn't work
});
答案 0 :(得分:1)
更改后:
以下行中的 this
将指向window
:
popover = $(this).next("div.popover");
之前,它指向selectButton
。尝试:
selectButton.hover(function () {
openPopover.call(this, true);
});
答案 1 :(得分:0)
确保在点击链接后阻止链接隐藏:
link.click(function (e) {
e.preventDefault();
someAction(true);
});