Irvin Dominin kabul ettiği cevabı bu benim için büyük bir yardımcı oldu. Herhangi bir kişi benim sahip olduğum ek şartlara sahipse, genişledim.
Ayrıca araç ipucu ekranında gecikme yapmak istedim. "Show" seçeneği null olarak ayarlandığından, çoğaltmam gerekiyordu. (fare, araç ipucundan çağrıya geri döndüğünde açılan pencerenin görünür şekilde yeniden çizilmesini engellemek için show seçeneği null olarak ayarlanır).
Gelişmekte olduğum bir sayfa çok sayıda kullanıcı ipucuna sahip olduğundan ve anlık görüntü sayfa boyunca hareket ederken biraz sarsıcı olduğundan bir gecikme yapmam gerekiyor.
Çözümüm, araç ipucunu gizlemek ve tekrar görüntülemeden önce zaman aşımı eklemek için açık etkinliği kullanmaktı. Bunun istisnası, aynı araç ipucunun zaten açık olması ve bunu sıralamaktı. Bunu açarken/kapatırken her bir öğeye doğru/yanlış bir veri özniteliği ekledim (kaynak öğeyi açık ve kapalı işlevlerden almak kolay olmadı, ancak Bence haklı.
Sorumluluk reddi: JQuery'de uzman değilim ve bunu çoğaltmanın daha kolay bir yolu olabilir. Aşağıdaki kod kötü bir tavsiye olabilir bu yüzden ... Ben de çağıran bağlantıya bir ok koymak benim pop-up için bazı sınıfları ve konumlandırma eklendi
var ttWait; // global variable for tooltip delay
$(document).tooltip({
items: '.userSummaryLink',
show: null,
content: function() { // build the popup content
return $(this).prop('title');
},
open: function (event, ui) { // simulating the show option (that needs to be null to stop the popup closing and reopening when user mouses from popup back to source
var el = $(event.originalEvent.target);
if(!el.data('tooltip')) { // only put open delay if SAME popup not already open
ui.tooltip.hide(); // stop popup opening immediately
ttWait = setTimeout(function() { // show popup after delay
el.data("tooltip", true); // acknowledge popup open
ui.tooltip.fadeIn("400");
}, 250);
}
},
close: function (event, ui) {
var el = $(event.originalEvent.target);
el.data("tooltip", false); // acknowledge popup closed (might be over-ridden below)
clearTimeout(ttWait); // stop tooltip delay function
ui.tooltip.hover(
function() {
$(this).stop(true).fadeTo(400, 1);
el.data("tooltip", true); // acknowledge popup still open
},
function() {
$(this).fadeOut("400", function() {
$(this).remove();
});
});
}
});
Not bazen kod ile tavşan deliği aşağı takılıp. Ayrıca içeriğim, sayfaya yüklenen bir kullanıcı nesnesi dosyasından türetildi. Umarım kullanımı daha kolay hale getirmek için bunları kaldırdım.
Jsfiddle ile ilgili sorunun bir tanıtımını yapabilir misiniz? –
Soruyu güncelledim ve jsfiddle'a örnek ekledim. – Nir
http://stackoverflow.com/questions/16660576/only-close-tooltip-if-mouse-is-not-over-target-or-tooltip – apaul