2012-01-12 66 views
0

我正在使用JQuery来创建“阅读更多”按钮。当有人点击按钮时会弹出一个弹出窗口。这个弹出窗口实际上是一个隐藏的div。我的问题是,虽然我点击按钮,我希望div出现在按钮上,当我点击弹出窗口上的十字标记时,它应该回到它起源于的同一个按钮,但是我得到的结果是,当我点击div出现的按钮,而当我点击交叉时,它会进入'read more'按钮,我点击第一个按钮。请帮我解决这个问题。我想我的代码中有一个小故障。我有它的小提琴http://jsfiddle.net/shivkumarganesh/qLEbD/如何使用JQuery修复此动画?

回答

3

检查此琴:http://jsfiddle.net/6uLF7/

的问题是与存储离开了目标和顶部偏移变量的局部范围。

的变化在顶部

新增2声明:

var readMoreInfoTop = 0; 
var readMoreInfoLeft = 0; 

删除var关键字从topleft分配的click处理

readMoreInfoTop = readMoreOffset.top + 10; 
readMoreInfoLeft = readMoreOffset.left + 10; 
+0

+1为完美的解决方案;请你指出你的小提琴的变化? – diEcho 2012-01-12 06:21:07

+0

请参阅我的回答 – techfoobar 2012-01-12 06:24:10

+1

@techfoobar更新其实最好的解决方法是删除$(”交叉)。从readmoreinfo块单击事件,并分别提到它,然后宣布这两个变量全球二者的点击事件全球只有2个点击事件。你可以看看这里http://jsfiddle.net/shivkumarganesh/qLEbD/ – 2012-01-12 07:06:19

0

内每次打开时间按钮,您将添加另一个侦听器到关闭按钮。重新绑定它之前,您可以解除绑定关闭的监听器。 http://jsfiddle.net/qLEbD/54/

或更好,但...

绑定的密切监听一次(按一下按钮功能外)和存储按钮左侧的位置单击如。

//doc ready... 
function() { 

    var leftPosition; 

    $('.button').click(function() { 
    //animate popup to open 
    leftPosition = $(this).offset.left; 
    }); 

    $('#close').click(function() { 
    //animate popup to close using leftPosition 
    }); 
}(); 
+0

我得到的,但它不会是明智的,避免错误,是有..这只是一个修复。不过谢谢。我已经更改了http://jsfiddle.net/shivkumarganesh/qLEbD/中的内容,请检查它。 – 2012-01-12 07:10:29