状态改变后jQuery函数消失了

时间:2011-08-09 03:05:08

标签: jquery jquery-ui

当用户将鼠标悬停在图像上时,我正在使用jQuery的transfer()将图像移动到中心相框。这是应该发生的事情:

  1. 用户将鼠标悬停在缩略图上。
  2. 缩略图转移到页面中心的相框。
  3. 缩略图消失。
  4. 用户将鼠标悬停在第二个缩略图上。
  5. 此缩略图替换中心框中的其他图片,然后重新显示第一个缩略图。
  6. 用户再次悬停在第一个缩略图上。
  7. 重复步骤2-3。
  8. 所有步骤1-5都适用于我的代码,您可以在此jsFiddle中看到。步骤6-7不起作用。就像通过步骤2和步骤2从图像中移除转移代码一样。 3。

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为您使用one方法来绑定事件。我修好了,看看这个小提琴here

<强>代码

var imgPath = new Object;
imgPath["gen"] = "http://techfeed.net/dyany.com/images/genealogyLarge.png";
imgPath["bo"] = "http://techfeed.net/dyany.com/images/BabyBoSayingOLarge.png";
var lastImage = "";
var transferInProgress = false;
$(function() {

    function runTransfer(imgID) {
        if(transferInProgress)
            return;
        transferInProgress  = true;
        var options = { to: "#picFrame", className: "ui-effects-transfer" };

        // run the transfer
        $("#"+imgID).effect("transfer", options, 1000, afterTransfer(imgID));
    };

    function afterTransfer(imgID) {
        setTimeout(function() {
            $("#picFrame").html('<img src="'+imgPath[imgID]+'">');
            $("#"+imgID).hide();
            if ((lastImage != "") && (lastImage != imgID)) {
                $("#"+lastImage).show();
            }
            lastImage = imgID;
            transferInProgress = false;
        }, 1000);
    };

    $("#gen, #bo").mouseover(function(){runTransfer(this.id); return false; });
});