따라서, 추가 코드없이, 이것은 블라인드 샷의 비트가 [회원 토니의 연구에 대한 응답으로 편집] ,하지만 여기에는 두 가지가 있습니다. 1. 기본 브라우저 툴팁 동작. 2. 잠재적으로 업데이트되는 DOM 및 사용자 정의 툴팁이 계속 작동 할 수있는 기능.
# 1 : 사용자 지정 이벤트를 요소에 바인딩하면 event.preventDefault()
을 사용하여 도구 설명이 나타나지 않도록 할 수 있습니다. 이것은 제대로 작동하지 않습니다. 따라서 "title"속성을 계속 사용하는 것은 데이터 객체 ($.data()
함수)에 값을 넣은 다음 빈 문자열 (removeAttr이 일치하지 않음)로 제목을 null로 만드는 것입니다. 그런 다음 mouseleave에서 데이터 객체의 값을 가져 와서 제목으로 다시 푸시합니다. 이 아이디어는 여기에서 오는 것입니다 : How to disable tooltip in the browser with jQuery?
# 2 : DOM 변경시 다시 바인딩하는 대신 파괴 될 것으로 예상되지 않는 수신기 요소에 한 번 바인딩하면됩니다. 보통 이것은 일종의 컨테이너 요소이지만 실제로는 모든 컨테이너를 필요로하는 경우 document
(근사치는 .live()
입니다. 현재는 사용되지 않습니다) 일 수 있습니다.
<div class="section">
<a href="#" title="foo">Hover this foo!</a>
<div id="notatooltip"></div>
</div>
그리고 바이올린은 여기에 있습니다 : : (그냥 예를 들어)
var container = $('.section');
container.on('mouseenter', 'a', function() {
var $this = $(this);
var theTitle = $this.attr('title');
$this.attr('title', '');
$('#notatooltip').html(theTitle);
$.data(this, 'title', theTitle);
});
container.on('mouseleave', 'a', function() {
$('#notatooltip').html('');
var $this = $(this);
var storedTitle = $.data(this, 'title');
$this.attr('title', storedTitle);
});
내 비현실적 마크 업 여기에 있습니다 : 여기에 내 자신의 고안의 일부 가짜 마크 업을 사용하는 샘플입니다 http://jsfiddle.net/GVDqn/ 또는 일부 건전성 검사 : http://jsfiddle.net/GVDqn/1/
아마도이 방법을 사용하는 것이 더 좋습니다 (솔직히 하나의 선택기로 두 개의 개별 이벤트에 대해 두 개의 개별 기능을 바인딩 할 수있는 경우 연구하지 않았습니다).
DOM 변경을 기반으로 다시 바인딩 할 필요는 없습니다. 위임 된 수신기는 자동으로 처리합니다. 그리고 그것을 막음으로써 기본 툴팁 기능을 막을 수 있어야합니다.
가능한 중복 [DOM을가 변경되었을 때 확인하는 방법?] (http://stackoverflow.com/questions/3744706/how-to-identify-when-the -dom-has-been-changed) –
은 DOM의 모든 변경 사항을 청취하려고 할 때처럼 보이고 매번 요소를 검색하면 비용이 많이들 것입니다. – charlietfl
가능한 [jQuery DOM 변경 리스너가 있습니까?] (http://stackoverflow.com/questions/2844565/is-there-a-jquery-dom-change-listener) – APerson