0

jQueryに奇妙な問題があります。

<a>タグのイベントで実行される関数があります。

link.click(someAction);

アクションでは、別の div 要素を変更します。ここでは、いくつかの CSS パラメーターを設定し、クラスを変更するだけです。

これは期待どおりに機能します。

someActionここで、bool パラメーターを使用して展開したいと考えました。
次のようにメソッドを呼び出すことができると考えました。

link.click(function () {
    someAction(true);
});

残念ながら、これは機能しません。理由がわかりません。
メソッドとすべてが呼び出されますが、CSS とクラスは変更されません。

次に、まったく同じメソッドを呼び出す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
  });
4

2 に答える 2

0

リンクがクリックされたら、必ずリンクの preventDefault を実行してください。

link.click(function (e) {
    e.preventDefault();
    someAction(true);
});
于 2013-02-04T09:25:30.240 に答える