2011-08-20 5 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') 
    }); 
} 

내보기

내가 스크립트 정지 작업

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와 기능을 변경하는 경우

<%= link_to_share 'Share', request.url %> 

.

내 Firebug 디버거에서 첫 번째 오류에는 아무런 오류가없고 두 번째 시도에서는 라이브 기능도 오류가 없습니다.

저는 gemfile에서 jquery-uij를 사용합니다.

감사합니다.

답변

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

아니요, 이벤트가 없습니다. alert() 메시지가 없습니다. .. 감사합니다. – 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') 
    }); 
} 

해당 코드의 문제점은 click 이벤트가 발생한 후 리스너를 추가한다는 것입니다. 첫 번째로 아무 일도 일어나지 않는 이유는 아직 이벤트 처리기가 없다는 것입니다. 그러나 두 번째 클릭시 첫 번째 클릭으로 생성 된 이벤트 핸들러를 호출합니다. 아마도 코드를 재 작업하여 share_link를 이벤트 핸들러 함수 자체로 사용할 수 있는지 확인하십시오. 당신이 사용하고 있기 때문에

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

네, 도움 주셔서 감사합니다, 만약 내가 클릭 처리기를 사용하려면, 나는 그것을 함수 선언에서 꺼내야합니다. 다시 한 번 감사드립니다! – neimad

관련 문제