用户添加新笔记。注释被添加到数据库并返回要显示给用户的注释的HTML,并返回该注释的上下文菜单:
success: function( result ) {
var resultArray = eval( result );
$( "#notes").append( resultArray[0] );
$( "#notes").append( resultArray[1] );
}
resultArray [0]是:
<tr class="getMenuNote contextMenuPointer-note" id="<?php echo $note->id ?>">
/*details of note here... nothing interesting and works just fine*/
</tr>
resultArray [1]是:
<div class="contextMenu" id="menu-<?php echo $note->id ?>" class="dropdown clearfix">
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
<li><a tabindex="-1" href="" class="deleteNote" noteID="<?php echo $note->id ?>">Delete</a></li>
</ul>
</div>
问题在于,当用户点击笔记时,它应该调用.getMenuNote。它是在文档加载时加载的。我理解.getMenuNote不知道新添加的HTML存在并且无法将它们链接在一起,但是如何让它知道它存在?
我查看了.on()和.live(),但似乎没有一个对我有用。寻找代码而非理论的解决方案。
全部谢谢!
的 EDITED 的 这是事件处理程序:
$( ".getMenuNote" ).click( "contextmenu", function ( e ) {
noteID = $( this ).attr( "id" );
$( "#menu-" + noteID ).css( {
display: "block",
left: e.pageX,
top: e.page
} );
return false;
} );
答案 0 :(得分:0)
也许这个?
$( "#notes").on("click", ".getMenuNote", function(e){
var noteID = this.id;
$( "#menu-" + noteID ).css( {
display: "block",
left: e.pageX,
top: e.page
} );
});
此外,如果#notes
是<table>
,那么您可能需要添加HTML,如下所示:
$( "#notes").append(resultArray[0])
.find("tr:last-child")
.append(resultArray[1]);
最后一件事......
我不是一个PHP人(我使用.NET),但如果你在AJAX调用后通过jQuery将它注入DOM,我不会认为php代码(<?php echo $note->id ?>
)会呈现。您应该返回已包含ID的HTML标记。