Tôi viết một tooltip đơn giản:Bộ chọn jQuery này hoạt động như thế nào?
$(function() {
$('a').hover(function() {
var curLink = $(this);
var toolTipText = curLink.attr('title');
if (toolTipText)
{
var theOffset = curLink.offset();
$('body').prepend('<div id="toolTip">'+toolTipText+'</div>');
// how the heck is this working???
$('#toolTip').css({
'left' : theOffset.left+'px',
'top' : theOffset.top - 30+'px'
});
}
}, function() {
$('#toolTip').remove();
});
});
Như bạn có thể thấy một div với id của "tooltip" là tự động thêm vào DOM khi dùng di chuột qua một liên kết. Đó là div không có ban đầu khi DOM tải nhưng được thêm vào sau. Vì vậy, tôi giả sử tôi đã phải sử dụng chức năng live()
và đính kèm một sự kiện vào nó. Nhưng một số cách nó hoạt động nếu tôi chỉ coi nó như một bộ chọn thông thường. Không phải là tôi phàn nàn nhưng làm thế nào mà nó hoạt động?
Hãy nhớ rằng ngay cả khi bạn đã sử dụng '.live()' bạn sẽ phải sử dụng '.delegate()' thay vì '.live()'. Vì '.live()' sẽ được áp dụng cho toàn bộ DOM và '.delegate()' một phần tử DOM cụ thể. Đó là hiệu suất tốt hơn-khôn ngoan. – PeeHaa