我的jquery有问题但无法找到原因。 当我第一次点击链接时,没有任何反应。在第二次单击时,我的链接工作。这是我的代码。
aplication_helper.rb
def link_to_share(name, url)
link_to_function(name, "share_link(name, url)")
end
我的jquery文件
function share_link(link, url)
{
$(link).click(function() {
window.open('http://www.facebook.com/sharer.php?u='+ url, 'popupwindow', 'height=430,width=500')
});
}
我的观点
<%= link_to_share 'Share', request.url %>
如果我改变我的jquery函数,如
function share_link(link, url)
{
$(link).live('click', function() {
window.open('http://www.facebook.com/sharer.php?u='+ url, 'popupwindow', 'height=430,width=500')
});
}
脚本停止工作。
在我的Firebug调试器中,第一次点击没有错误,第二次尝试使用live函数,也没有错误。
我使用gemfile中的jquery-uij。
感谢。
答案 0 :(得分:0)
什么都没有正在发生,或者是否正在调用事件处理程序但是窗口没有被打开?它可能是一个狡猾的弹出窗口拦截器。在函数中放置alert()
以查找。
答案 1 :(得分:0)
function share_link(link, url)
{
$(link).click(function() {
window.open('http://www.facebook.com/sharer.php?u='+ url, 'popupwindow', 'height=430,width=500')
});
}
该代码的问题在于它在发生click事件后添加了侦听器。所以第一次没有任何事情发生的原因是还没有事件处理程序。但是在第二次单击时,您将调用通过第一次单击创建的事件处理程序。看看你是否可以重新编写代码,可以将share_link作为事件处理函数本身。
function share_link(event)
{
...
}
$(link).click(share_link);
答案 2 :(得分:0)
要使代码正常工作,请删除点击处理程序
$(link).live('click', function() {
}
然后离开
function share_link(link, url)
{
window.open('http://www.facebook.com/sharer.php?u='+ url, 'popupwindow', 'height=430,width=500')
}
您不需要定义单击处理程序,因为您正在使用link_to_function帮助程序。 link_to_function帮助程序只调用您单击该链接时输入的函数。
有关详细信息,请查看documentation。我不知道这个帮手,谢谢你提出这个问题。