我创建了一个使用PHP动态创建的表。
基本上看起来像这样。
<table class="persist-area table table-bordered ">
<thead>
<tr class="persist-header">
<th>1. th</th>
<th>2. th</th>
<th>3. th</th>
<th>4. th</th>
</tr>
</thead>
<tbody class="maintable">
<span class="genTable" id="<?php echo $partnerId ?>">
</thead>
<tbody class="maintable">
<span class="genTable" id="<?php echo $partnerId ?>">';
<?php echo $partner->genTable();?>
</span>
</tbody>
</table>
</div>
</div>
我直接在我的partner.php
文件中。
现在,我想创建一个AJAX
函数,当你访问partner.php时加载这个表,这样我每次用户对表进行更改时都可以调用该函数。
所以我创建了这个javascript函数:
function genTable(){
$.ajax({ type: "POST",
url: "resources/dialogs/genTable.php",
data: {'partnerId': '1'},
success: function(msg){
$("div#gentable").html(msg);
}});
}
因此,这会对我创建的新文件发出POST
请求,该文件将返回与上面完全相同的表。
但现在我的其他javascripts不再适用于桌面了。 例如,我运行了另一个脚本,以使表标题在滚动时保持不变:
function UpdateTableHeaders() {
$(".persist-area").each(function() {
var el = $(this),
offset = el.offset(),
scrollTop = $(window).scrollTop(),
floatingHeader = $(".floatingHeader", this)
if ((scrollTop > offset.top) && (scrollTop < offset.top + el.height())) {
floatingHeader.css({
"visibility": "visible"
});
} else {
floatingHeader.css({
"visibility": "hidden"
});
};
});
}
// DOM Ready
$(function() {
var clonedHeaderRow;
$(".persist-area").each(function() {
clonedHeaderRow = $(".persist-header", this);
clonedHeaderRow
.before(clonedHeaderRow.clone())
.css("width", clonedHeaderRow.width())
.addClass("floatingHeader");
});
$(window)
.scroll(UpdateTableHeaders)
.trigger("scroll");
});
上面的代码只是一个例子。与表交互的所有其他javascripts也不起作用 - 有没有办法使我能够工作?
我认为它与如何加载东西有关?我应该使用livequery
还是如何让我的其他脚本适用于AJAX
生成的内容?
如上所述,如果我直接从partner.php
文件加载表格,所有脚本都可以正常运行,但是当尝试使用AJAX
加载它时,它会中断。
任何帮助将非常感谢。
答案 0 :(得分:1)
这实际上比你想象的要简单。
您需要做的就是将您的监听器放在一个函数中,并在每次ajax加载完成时重新调用该函数。