2012-02-13 57 views
2

我想添加一个jquery-ui selectable从jQuery的.post()返回的数据。看起来好像是在帖子的数据中创建的选择器没有被识别。我在想我可以使用.live(),但我不确定。如何添加selectable从数据返回jquery .post()

这是我使用的代码:

$.post('middleman.php', { request:"getfeedbacknav"}, function(data) { 
     $('#feedbacknav').html(data); 
}); 
$("#selectable").selectable(); 

这里是我试图使可选择的数据:

<div id="feedbacknav" width="20%"> 
<h3>Feedback</h3> 
<br> 
<ol id="selectable" width="100%"> 
    <li class="ui-widget-content"> 
     <div width="8%"><img src="image/faces/sad_face_3.png" width="25px" height="25px"> 
     </div> 
     <div width="88%" style="padding-top:8px;" id="fb_5678908'"> 
      intial feedback 
     </div> 
    </li> 
    <li class="ui-widget-content"> 
     <div width="8%"><img src="image/faces/happy_face_3.png" width="25px" height="25px"> 
     </div> 
     <div width="88%" style="padding-top:8px;" id="fb_1328896423'"> 
      Server : Bryan 
      Comments : Ok 
     </div> 
    </li> 
    <li class="ui-widget-content"> 
     <div width="8%"><img src="image/faces/happy_face_2.png" width="25px" height="25px"> 
     </div> 
     <div width="88%" style="padding-top:8px;" id="fb_1328898803'"> 
      Server : Russ 
      Comments : He was nice 
     </div> 
    </li> 
</ol> 

ol被显示出来,当我使用chrome进行检查,但在查看页面源代码时未显示。我也没有得到任何错误。

+1

查看源代码仅显示加载页面时最初发送的HTML,它不反映由于Javascript而对DOM的更改。 – 2012-02-13 19:00:50

回答

1

您必须在服务器的HTML返回并呈现在浏览器中后调用.selectable。你现在拥有它的方式,它会在Post之后立即被调用,并且Post的结果尚不可用,所以$(“#selectable”)是空的。

$.post('middleman.php', { request:"getfeedbacknav"}, function(data) { 
    $('#feedbacknav').html(data); 
    $("#selectable").selectable(); 
}); 
1

你应该初始化在$。员额方法的回调可选择,否则运行前的内容实际上是添加到DOM:

$.post('middleman.php', { request:"getfeedbacknav"}, function(data) { 
     $('#feedbacknav').html(data); 
     $("#selectable").selectable(); 
}); 
0
  1. 新创建ol是没有在页面源中显示,因为JavaScript 动态添加它们,并且ViewSource仅显示静态的 元素。 JavaScript不会将新元素物理地写入到静态源中,而是将它们添加到DOM(文档对象模型)中。它在客户端创建它们或者可以虚拟地创建它们。

  2. 您也可以使用live()或事件委托方法。这page有很好的教程。