2011-05-16 75 views
1

我做了一些搜索,我认为这应该工作,但我想我错了。我在一个函数中使用Ajax管理器。JQuery传递SpanID到选择器没有找到元素

我的JS:通过XSL生成

function makeGetRequest2(wordId,docId) { 
    var ajaxManager = $.manageAjax.create('cacheQueue', { queue: true, cacheResponse: true }); 
    //and add an ajaxrequest with the returned object 
    ajaxManager.add({ success: function(html) { 
      $('span[id="' + docId + '"]').text(' - Downloaded ' + html + ' time(s)'); 

     }, url: '/knb/GoogleAnalytic?docId=' + wordId 
    }); 

} 

我的HTML。它迭代几个记录,将它列在一个表中。翻译时,HTML看起来像这样片段1次的记录:

"... Download File <img alt="download" border="0" style="margin:0px 0px; padding:0px;" src="page_white_put.png"> 
<script type="text/javascript">makeGetRequest2(escape('Title 2'),'book-3'); </script> 
<span id="book-3"></span>.. " 

的想法是让Ajax调用,并打印出span标记内的结果。 span id是可变的(从1开始 - 但是有很多记录),并传递给makeGetRequest2函数。

如果我尝试使用不带变量的选择器,即$('span [id =“book-3”]')。text(),那么ajax是成功的。但是由于某种原因我没有发现它带有“+ docId +”。我已检查参数是否具有正确的值。

回答

4

相反的:

$('span[id="' + docId + '"]') 

你应该使用:

$('span#' + docId) 
+0

谢谢,这是正式记录任何地方?我从另一个论坛获得了第一个格式,提问者说这很有效。 :( – Yun 2011-05-16 05:55:18

+0

你正在使用的是通过使用属性进行选择的通用方法,它也应该起作用,但是'id'和'class'是选择元素的主要原因,所以它们具有相同的标记,它们是相同的因此,对于CSS类,您必须使用'$('#my_id')'ID和'$('。my_class')',以下是基本选择器http://api.jquery的文档。 COM /分类/选择/基本-CSS选择器/ – morgar 2011-05-16 15:22:00