2011-08-20 110 views
0

我有我的jQuery的問題,但無法找到原因。 當我第一次點擊鏈接時,什麼也沒有發生。在第二次點擊時,我的鏈接工作。這是我的代碼。Rails 3 + 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 %> 

如果我改變像

function share_link(link, url) 
{ 
    $(link).live('click', function() { 

    window.open('http://www.facebook.com/sharer.php?u='+ url, 'popupwindow', 'height=430,width=500') 
    }); 
} 

腳本停止工作我的jQuery函數。

在我的Firebug調試器

,我對第一次點擊錯誤,而在第二次嘗試與肝功能,沒有錯誤了。

使用jQuery,爲uij從Gemfile中。

謝謝。

回答

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。我不知道這個幫手,謝謝你提出這個問題。

+0

哦,太棒了!現在工作了!它只是因爲助手或函數聲明?並感謝您的鏈接! – neimad

+0

沒錯!不用謝.. – e3matheus

0

什麼也沒有發生或者是被調用的事件處理程序,但窗口未被打開?它可能是一個非常棒的彈出式窗口攔截器。把一個alert()在函數中找出來。

+0

不,沒有事件,沒有!警報()沒有消息太..謝謝。 – neimad

+0

對於遲到的回答很抱歉,問題沒有完全解決。我將在我的主要主題發佈更新。 – neimad

0
function share_link(link, url) 
{ 
    $(link).click(function() { 

    window.open('http://www.facebook.com/sharer.php?u='+ url, 'popupwindow', 'height=430,width=500') 
    }); 
} 

該代碼的問題在於,它在點擊事件發生後添加了監聽器。所以第一次沒有事情發生的原因是沒有事件處理程序。但在第二次點擊時,您將調用通過第一次點擊創建的事件處理程序。看看你是否可以重寫你的代碼,以將share_link作爲事件處理函數本身。

function share_link(event) 
{ 
... 
} 
$(link).click(share_link); 
+0

是的,感謝您的幫助,如果我想使用點擊處理程序,我需要將它從函數聲明中取出。再次感謝! – neimad

相關問題