2012-05-23 3 views
0

"의견보기"링크를 클릭하면 Div를 열고 Facebook 설명 상자를 추가하고 싶습니다. 하지만 FB 주석을 한 번만 추가하고 링크를 사용하여 해당 Div를 토글하고 싶습니다. ...html을 한 번만 추가하는 가장 좋은 방법은 무엇입니까?

http://jsfiddle.net/4LnzD/

감사를

나는 이런 식으로 뭔가를 시도했지만 그것은 단지 그것을 내가 과정의 링크를 클릭 할 때마다 추가!

UPDATE :

http://jsfiddle.net/4LnzD/4/

이 지금은 좋은 일하고,하지만 누군가가 그것을 할 수있는 가장 효율적인 방법을 알고 있다면, 당신은 환영합니다!

+0

왜 가시성을 전환하는 대신 추가를 사용합니까? – deltree

+0

@deltree 나는 페이스 북의 코멘트 박스를 모두로드하지 않는 것이 더 낫다고 생각한다. 클릭만으로로드하고 싶습니다 ... – Santiago

+0

그러면 AJAX를 통해로드됩니다. div는 AJAX 호출에 의해 생성되지 않고 토글에 따라 계속 표시되거나 보이지 않습니다. – deltree

답변

3

콘텐츠 추가 후 대상 요소에 클래스 이름을 추가하십시오. 두 번째 클래스를 추가하기 전에 클래스 이름이 있는지 확인하십시오.

1) 클래스

$('#target').addClass("done") 

2) 클래스

if($('#target').hasClass("done")) { 
... 
} 
+0

".hasClass"를 사용했지만 사용하지 못했습니다. 불행히도 저는 jQuery와 프로가 아닙니다. ( – Santiago

+0

코드 예제를 추가했습니다. –

+0

나는이 일을하고 있지만 잘못하고 있다고 생각한다. $ ('# fb_comentarios_'+ uid) .addClass ("done") \t if ($ ('# fb_comentarios _'). hasClass ("done ")) { \t \t $ ('# fb_comentarios_'+ uid) .toggle(); \t} else { \t $ ('# fb_comentarios_'+ uid) .append (commentBox); \t} – Santiago

0

사용 확인 추가

$(document).load(function() { 
    //Load comments section here 
    $('.fb_comments').hide(); 
}) 

이 주석을 만들 수 있지만 다음을 숨길에게. 그런 다음 버튼을 생성하고, onClick (또는 .click() 바인딩)이 전화 : 코멘트 DIV 이미 DOM에 존재하는 경우 그 다음 추가하지 않는 경우

$('.fb_comments').toggle(); 
+0

문제는 내가 페이지를로드 할 때 페이스 북의 코멘트를 모두로드하고 싶지는 않지만 "show comments"링크를 클릭했을 때 ... – Santiago

+0

@Santiago 왜 문서로드시 백그라운드로로드하지 않습니까? 사용자가 클릭 한 후 대기하게 만드는 이유는 무엇입니까? – ehudokai

+0

@ehudokai 아마도 더 좋을 것입니다. 문제는 내가 트위터처럼 "더 많은로드"를 사용한다는 것이고, 50 개 이상의 페이스 북 코멘트 상자를로드하는 것이 가장 좋을지 모르겠다. – Santiago

1

확인이보고 :

if(! $('#fb_comments_' + uid).children(".fb-comments").length){ 
    $('#fb_comments_' + uid).append(commentBox); 
} 

$('#fb_comments_' + uid).toggle(); 

.length는 DOM의 해당 선택기와 일치하는 요소의 인스턴스 수를 반환합니다. javascript에서는 0은 false와 같기 때문에 조건부에서 부울로 처리 할 수 ​​있습니다.

+0

이 방법이 효과적이지만 모든 페이지가로드되기 전에 링크를 클릭하면로드되지 않습니다. 아무것도 하지마. 그거 이상 하네... – Santiago

관련 문제