2010-04-28 5 views

답변

24

나는 $(".qtip").remove();

+3

이 선택기를 통해 제거하면 대상 요소에 바인딩 된 리소스가 모두 지워지지 않습니다. –

+0

또한 Qtip2는 기본적으로 '지연로드'를 사용하므로 툴팁은 첫 번째 외형이 – Bizniztime

2

이 버그를 보이는하지 않았다. 나는 이것에 약간의 행운을 가져 왔지만 원래의 제목을 복원하지는 않습니다. 그것은 자동으로 실패하지 않는, 그러나 예외가 발생하고 루프를 중지 - 나는 의심 destroy 중 하나 ...

$('span.taxonomy-image-link-alter img') 
    .filter(function(){return $(this).data('qtip');}) 
    .qtip('destroy'); 

당신이 qTip없이 요소 destroy를 호출 할 수 없습니다 보인다하지 않습니다.

+3

난이 방법으로 해결했습니다. $ (". qtip")를 제거 (); 페이지 하단의 qTip에 추가 된 모든 요소를 ​​제거합니다. – aneuryzm

+0

@Patrick - 데이터 및 이벤트 처리기를 남겨 둘 수는 있지만 소리가 좋습니다. 내 버전은 더 좋지는 않지만 ... 다른 대답을 추가하고 받아 들여야합니다. – Kobi

17

qTip2이 스크립트의 새 버전으로 해결했지만, 난 그냥 1 점을 지적하고 싶습니다.

$(".qtip").remove(); 

이 코드는 툴팁을 모두 삭제하지 않았습니다. 툴팁을 호출 한 객체에 연결된 모든 핸들러와 이벤트는 브라우저의 메모리에서 여전히 사용할 수 있습니다.

$(mytooltip).qtip("destroy"); 

또는 qTip2에서

$(mytooltip).qtip('api').destroy(); 

그러나이 사용 :

$(mytooltip).remove(); 

을겠습니까보기 자동 scompletely 사용할 것 qTip에서

는 툴팁을 삭제하고이 핸들러입니다 api를 호출하고 툴팁을 파괴하면 핸들러가 완전히 사라집니다.

+2

+1이 될 때까지 생성되지 않습니다. 컨테이너를 제거하면 호버 툴팁뿐만 아니라 내부의 모든 요소도 파괴됩니다. –

16
$('.qtip').each(function(){ 
    $(this).data('qtip').destroy(); 
}) 
+0

완벽하게 작동했습니다. – sh1rts

+0

요소 선택기를 가져올 수없는 경우에 유용합니다. – Mistergreen

+0

이것은 가장 합리적인 해결책처럼 보입니다. – bbeckford

0
if (jQuery('.qtip').length > 0) 
    { 
     jQuery("#IdElement").qtip("destroy"); 
    } 
2

나는 동시에 여러 qtips를 사용하여, 특히 신뢰성있게 모든 qtip 데이터를 제거하지 않습니다

$(selector).qtip('destroy') 

을 API를 호출 할 것을 경험했다.

내 경우에는 내가 볼 수 qtip을 제거했다 성공적으로이 해결 방법을 사용 :이 답변

$(selector).removeData('qtip'); 
$('.qtip :visible').remove(); 
0

아무도 나에게 도움이되지 않습니다.

제 경우에는 닫는 버튼이있는 요소에 qtip이 있습니다. 닫기 버튼은 요소를 제거 했으므로 요소가 제거 된 후 qtip을 제거 할 참조 점이 없었습니다.

나는 $('.qtip:visible').remove()이 효과가있을 것이라고 생각했지만 어떻게 든 페이지의 qtips를 모두 제거하고 제거하고 싶지 않은 것은 하나도 제거하지 않았습니다.

I이었다 그래서 나를 위해 일한, 가시 qtip 클래스 qtip-active 주어집니다 것으로 나타났습니다 :

$('.qtip-active').remove();

11

qtip("destroy")이 버그 (버전 2.1.1)이고 명확한 모든 것을하지 않습니다.

나는 적절한 해결 방법으로이 문제를 발견

// don't call destroy if not needed 
if (element.data("qtip")) { 
    // the 'true' makes the difference 
    element.qtip("destroy",true); 
    // extra cleanup 
    element.removeData("hasqtip"); 
    element.removeAttr("data-hasqtip"); 
} 
+0

+1, qtip 파괴가 나를 위해 원하는 결과를 가지고 있지 않다 –

+0

+1, 2.1.1에 대해 사실을 추가했는지 확인했다. –

+0

많은 감사를드립니다! 나는 2.1.1에서 같은 문제가있는 것 같다. 그리고이 해결 방법은 나에게 트릭이다. – luke

0

그것은 조금 늦게있을 수 있습니다,하지만 난 대상 qtip2 삭제, 아약스 호출이 페이지의 내용을 대체 메모리와 페이지로드에 문제가 있었다 그 (것)들을 파괴하기 전에 목표, 그래서 표적이 갔더라도 몇몇 성분은 남아있다.

원본 개체가 존재하는지 여부에 관계없이 모든 qtips2 요소 및 데이터를 정리하려는 경우가 있기 때문에 일부 툴팁 요소가 본문에 남아 있으므로 원본 대상이 없어지면 쉬운 방법이 없습니다. destroy() 메서드를 호출합니다.

대상 대신 대상이 생성 된 개체를 검색하는 경우가 아니면. 대신 JQuery와의

jQuery('div[id^="qtip-"]').each(function(){ //search for remaining objects 

    _qtip2 = jQuery(this).data("qtip"); //access the data where destroy() exist. 

    //if it's a proper qtip2 object then call the destroy method. 
    if(_qtip2 != undefined){ 
     // the "true" is for immediate destroy 
     _qtip2.destroy(true); 
    } 
    //if everything went right the data and the remaining objects in the body must be gone. 
}); 

내가 노 갈등 문제에 대한 JQuery와 사용,하지만 당신은 "$"(기호)를 사용할 수 있습니다