2011-06-29 68 views
1

我试图在用户点击它时让div动画,以便当前的“主”div移出视野,另一个div移动到窗口中,以便用户可以看到他们点击的东西的更多细节。jquery动画和元素绑定悖论

我面临的问题是我已经实现的将用户带回到主div的按钮不能绑定到(.click)。代码如下所示:

$(".notification").click(function() { 
    $("#latestUpdates").hide("slide", { direction: "left", easing: "linear" }, 1000); 

    $("#mainContainer").append('<div id="notification-details"></div>'); 
    $("#notification-details").hide(); 
    $("#notification-details").append('<a href="#" id="close-notification-details">Close</a>'); 
    $("#notification-details").show("slide", { direction: "right", easing: "linear" }, 1000); 

    $("#close-notification-details").click(function() { 
     $("#latestUpdates").show("slide", { direction: "left", easing: "linear" }, 1000); 
     $("#notification-details").hide(); 
    }); 
}); 

当我点击关闭按钮#notification-details没有任何反应,当我重新键入重新绑定到关闭按钮到Firebug控制台的代码,它似乎工作,我有感觉这个问题可能与jQuery在元素完成效果之前绑定元素有关。

由于提前, RayQuang

回答

1

使用活地图点击事件

$("#close-notification-details").live('click',function() { 
     $("#latestUpdates").show("slide", { direction: "left", easing: "linear" }, 1000); 
     $("#notification-details").hide(); 
    }); 
1

问题的根源可能是两两件事:前执行

  • 你的JS插件DOM由浏览器解释。为了确保它是你可以做两件事:用一个文件准备好你的代码($(function(){ /* your code*/ }))。或者把你的代码放在你的html末尾(就在关闭body标签之前)

  • 第二个问题可能是你的div在你的代码执行后被JS添加到dom中。您可以使用$("a.yourlink").live("click", function(){ /* yourfunction */})解决此问题。这绑定了添加到具有此ID的DOM的每个新元素的点击。

  • 如果这对此没有帮助。在点击功能之上添加一个console.log(“something”)或alert(“something”),看它是否触发。如果没有,你知道点击事件没有被绑定,如果它在你的点击功能中做了某些事情不起作用。那么最好的做法是在console.log()中单击您正在操作的单个元素,以查看它返回的内容...