【发布时间】:2014-11-18 16:56:14
【问题描述】:
好的,我有一个 ajax 调用,我可以完美地工作并在我的页面上填充一个 Div。问题是我的脚本无法访问页面上的数据,因此我无法修改它。
我可以在 Firebug 中看到所有内容,但在源代码中看不到。所以脚本对 css 和 jquery 不起作用
我正在使用 Rails 3
我需要能够访问 TABLE id 结果,以便我的数据表 CSS 和 Jquery 对其进行样式化
HTML ->
<div id="hotload"></div>
使用 AJAX 填充的 jQuery ->
$(document).ready(function() {
var id = $('#id').val();
$.ajax({
url: "/searches/hotload_results/"+ id,
type: "GET",
success: function (data) {
$("#hotload").append(data);
},
error: function (jqXHR, textStatus, errorThrown) {
alert('error: ' + textStatus + ': ' + errorThrown);
}
});
return false;
});
此操作的控制器 ->
def hotload_results
@search = Search.find(params[:id])
@resultss = @search.searches(params[:hotloads_page])
@search.update_attributes(:resultss => @resultss.count)
render :partial => "hotload_results".html_safe, :layout => false
end
源代码->(仅正文)
<div class="container-fluid">
<div id="hotload"></div>
萤火虫->
<div id="hotload"><div id="load_results_table" class="row-fluid">
<div class="span12">
<h1 class="page-header">Search Results</h1>
<h3 class="page-subheader">​​2 Premium Loads</h3>
<div align="center">
<b>These are our Premium loads that we are offering. We guarentee 100% payment on these loads</b>
</div>
<table width="100%" cellspacing="0" class="redmond stripe" id="results">
<thead>
<tr>
<th>Updated At</th>
<th>Hotload</th>
<th>Updated</th>
<th>Origin</th>
<th>Dest</th>
<th>Pickup</th>
<th>Delivery</th>
<th>ltl</th>
<th>Equipment</th>
<th>Length</th>
<th>Actions</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Updated At</th>
<th>Hotload</th>
<th>Updated</th>
<th>Origin</th>
<th>Dest</th>
<th>Pickup</th>
<th>Delivery</th>
<th>ltl</th>
<th>Equipment</th>
<th>Length</th>
<th>Actions</th>
</tr>
</tfoot>
<tbody>
<tr>
<th>2014-10-20 18:05:41 UTC</th>
<td>
<div align="center">
<img src="/assets/stopwatch.fw.png">
</div></td>
<td><div align="center">29 days</div></td>
<td><div align="center">St Louis Area, MO</div></td>
<td><div align="center">Pine Bluff, AR</div></td>
<td>
<div align="center">2014-10-26
</div></td>
<td>
<div align="center">2014-10-27
</div></td>
<td><div align="center">Full</div></td>
<td>
<div align="center">Reefer
</div></td>
<td><div align="center">53</div></td>
<td>
<div align="center" class="btn-group">
<a href="/hotloads/93260" class="btn btn-info">Show</a>
<a user_id="11940" id="" href="javascript:void(0)" class="hot_save btn">Save</a>
<a user_id="11940" href="javascript:void(0)" class="cover_link btn btn-primary">Cover</a>
</div>
</td>
</tr>
<tr>
<th>2014-10-14 14:47:43 UTC</th>
<td>
<div align="center">
<img src="/assets/stopwatch.fw.png">
</div></td>
<td><div align="center">about 1 month</div></td>
<td><div align="center">Springfield, MO</div></td>
<td><div align="center">Gerald, MO</div></td>
<td><div align="center">TBD</div></td>
<td><div align="center">TBD</div></td>
<td><div align="center">Full</div></td>
<td>
<div align="center">Reefer
</div></td>
<td><div align="center">48</div></td>
<td>
<div align="center" class="btn-group">
<a href="/hotloads/93259" class="btn btn-info">Show</a>
<a user_id="11940" id="" href="javascript:void(0)" class="hot_save btn">Save</a>
<a user_id="11940" href="javascript:void(0)" class="cover_link btn btn-primary">Cover</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div></div>
更新:
这就是我所拥有的:
它应该是这样的:
我的 jQuery 代码无法访问这些元素
jQuery ->
$('#results').dataTable
sPaginationType: "full_numbers"
bJQueryUI: true
lengthMenu: [[5, 10], [5, 10]]
dom: '<"toolbar1">frtip'
aaSorting: [[0, "desc"]]
bSort: true
columnDefs: [
{
targets: [ 0 ]
visible: false
searchable: false
}
]
$('#results1').dataTable
sPaginationType: "full_numbers"
bJQueryUI: true
order: [[0, "desc"]]
dom: '<"toolbar2">frtip'
aaSorting: [[0, "desc"]]
bSort: true
columnDefs: [
{
targets: [ 0 ]
visible: false
searchable: false
}
]
$('#results_length').css("display", "none");
$('#results1_length').css("display", "none");
$("div.toolbar1").html('<img src="/assets/flame.fw.png" /> = Hotload <img src="/assets/stopwatch.fw.png" /> = Timed Load (timed Loads are good for 2 hrs)');
$("div.toolbar2").html('<b>Theses are loads offered by other Shippers</b>');
对此的更新:
Barry T. Smith 的回调是正确的…… 我需要在 AJAX 调用成功后重建数据表。
可以通过以下几种方式做到这一点:
或者顺便说一下我的做法:
var id = $('#id').val();
$.ajax({
url: "/searches/hotload_results/"+ id,
type: "GET",
success: function (data) {
$("#hotload").append(data);
$('#results').dataTable( {
"sPaginationType": "full_numbers",
"bJQueryUI": true,
"lengthMenu": [[5,10],[5,10]],
"dom":'<"toolbar1">frtip',
"aaSorting": [[0, "desc"]],
"bSort": true,
"columnDefs": [ {
"targets": [ 0],
"visible": false,
"searchable": false
} ]
})
},
error: function (jqXHR, textStatus, errorThrown) {
alert('error: ' + textStatus + ': ' + errorThrown);
}
});
【问题讨论】:
-
仅供参考,
$("#hotload").ready(...);只是$(document).ready(...);的语法不正确 -
会解决这个问题,但仍然需要弄清楚如何能够访问 DOM 中的表
-
什么是不适合您的 javascript?
-
关于您的问题,将目标元素添加到 DOM 后有什么问题?是动态ID还是什么?我真的不确定你的问题
-
我需要的目标不在 SOURCE 中...我需要访问表
标签: javascript jquery html css ajax