2012-08-10 71 views
3

我正在通过AJAX从文件中加载一些HTML,试图额外添加一个块并对其进行评估(动态HTML/JS加载)。JQuery .find()不工作?

的AJAX调用是:

 
$.ajax({ 
      url: 'module.html', 
      type: 'GET', 
      complete: function(xhr, textStatus) { 
      //called when complete 
      }, 
      success: function(data, textStatus, xhr) { 

      var jqData = $(data); 
      var scriptNode = jqData.find("#startScript"); 
      if (scriptNode.length > 0) 
      { 
       $.globalEval(scriptNode.html()); 
      } 
      .... 

被装载的HTML是:

<script type="text/javascript" id="startScript"> 
    $("#submitButton").button(); 
</script> 

我可以看到HTML被成功地加载在AJAX调用,并且jqData变量表示3个节点的数组([0]是脚本节点)。但是当我调用jqData.find(“#startScript”)时,返回值始终为空。有任何想法吗?

回答

6

find搜索之内的一个节点,所以你不能真的用它来找到顶层节点。

你可能有更好的运气与closest其搜索的父母和自我:

jqData.closest('#startScript') 
+0

谢谢,试过首先找到()的编辑之前并没有工作。最接近的功能是诀窍! – 2012-08-10 11:42:29

+0

@MeshMan:是的,我也注意到了:) – 2012-08-10 11:48:24

+0

@david我爱你。 – g33kz0r 2015-01-29 13:41:26