事件功能问题

时间:2013-02-04 09:20:07

标签: javascript jquery html css function

我对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
  });

2 个答案:

答案 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);
});