附加的HTML无法被jquery识别

时间:2013-11-07 21:14:11

标签: jquery ajax contextmenu

用户添加新笔记。注释被添加到数据库并返回要显示给用户的注释的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;
} );

1 个答案:

答案 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标记。