我正在使用dojo的事件委託將Tooltip小部件連接到動態生成的dom節點。Dojo Tooltip僅在第一次mousover事件後顯示
道場網站解釋事件代表團是這樣的:
「事件代表團背後的想法是,而不是 監聽器連接到感興趣的每個節點上的事件,您可以將 單監聽器一個更高級別的節點,它將檢查它捕獲的事件的目標是否從實際感興趣的 節點冒泡;如果是,處理程序的邏輯將被執行。
以下是我的代碼實現。它的作品非常漂亮...除了第一個鼠標懸停事件之外,該工具提示僅顯示AFTER。當我第一次將鼠標懸停在節點上時,事件完全觸發,但工具提示不呈現。它只會顯示隨後的鼠標懸停事件。在第一個mouseover事件中,我可以看到Firebug控制檯,並看到xhr.get轉到數據庫並獲取正確的數據。如果我註釋掉工具提示並提交一個簡單的警報(),它就會首次運行。
關於如何讓工具提示顯示在第一個mouseover事件上的任何建議?提前致謝!
<div class="col_section" id="my_groups">
<div class="col_section_label">My Groups</div>
<ul>
<?php
foreach($myGroups as $grp) {
echo '<li><a class="myGroupLink" id="grp'.$grp['grp_id'].'">'.$grp['name'].'</a></li>';
}
?>
</ul>
</div>
<script>
require(["dojo/on",
"dojo/dom",
"dijit/Tooltip",
"dojo/_base/xhr",
"ready!"], function(on, dom, Tooltip, xhr) {
// Get Group ToolTip
var myObject = {
id: "myObject",
onMouseover: function(evt){
var grp_id = this.id;
var content = '';
xhr.get({
url: "getGrpInfo.php",
handleAs: "json",
content: {
grp_id: grp_id,
content: "tooltip"
},
load: function(info) {
if(info == 0) {
content = '<div class="grpToolTip">';
content += ' Information about this group is confidential';
content += '</div>';
} else {
content = '<div class="grpToolTip">';
content += ' <img src="../ajax/getimg.php?id='+info.logo_id+'" />';
content += ' <div style="text-align:center">'+info.name+'</div>';
content += '</div>';
}
new Tooltip({
connectId: [grp_id],
label: content
});
},
error: function() {}
});
}
};
var div = dom.byId("my_groups");
on(div,".myGroupLink:mouseover",myObject.onMouseover);
});
</script>
謝謝,phusick。你的出色反應幫助我意識到我正在過度思考問題。我會在幾分鐘後發佈我所做的。 –
對於管理自己的鼠標懸停事件的工具提示,你完全正確。咄!再次感謝。 –