gpt4 book ai didi

javascript - 继续尝试函数,直到加载所需的 DOM 元素

转载 作者:行者123 更新时间:2023-11-28 21:15:29 25 4
gpt4 key购买 nike

我正在通过 XHR 将另一个页面加载到 el 中。加载的页面上有 js,除非页面上加载了所需的 dom 元素,否则会抛出错误并失败。因为它是 XHR .ready 等。等人。行不通的。

我让它工作时有 500 毫秒的超时,但这不行;一定有更好的方法。超时后,dom el 并不总是加载并且页面失败。

页面上有一个带有 id 硬编码的表格。页面中的脚本是一个 jquery 插件(数据表),除非加载表,否则不会初始化。

我考虑过有一个函数来初始化数据表内容并重复调用该函数 while $('#tableID') is null 但不确定这是否正确。

<div id="contactQueue">
<table cellpadding="0" cellspacing="0" border="0" class="display" id="contactsQueueTable">
<thead>
<tr>
<th class="" rowspan="1" colspan="1" style="width: 185px; ">Contact Name</th>
<th class="" rowspan="1" colspan="1" style="width: 148px; ">Bus. Name</th>
<th class="" rowspan="1" colspan="1" style="width: 116px; ">Is Client</th>
<th class="" rowspan="1" colspan="1" style="width: 165px; ">Remove</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<?php echo form_open('',array('id'=>'step2form','name'=>'step2form'));?>
<input type="hidden" name="clientID" value="<?php echo $clientID; ?>">
<?php echo form_close();?>


<script type="text/javascript" charset="utf-8">
console.log(jq('#currentContactsTable'))
while(jq('#currentContactsTable').html()==null){
initXHRPage();
console.log(jq('#currentContactsTable')+' not ready');
}
function initXHRPage(){
//init tables stuffs
}
<小时/>

编辑;

问题有点不同。数据表的脚本通过 getScript() 加载。该元素正常加载,但 initDatatables()getScript() 完成加载之前触发,而不是在 el 加载之前触发。

解决方案是在 getScript() 成功回调中调用 initDatatables() 函数:

<script type="text/javascript" charset="utf-8">
var jsf = '/js/jquery.dataTables.js';
jq.getScript(jsf, function(data, textStatus){
console.log('Loaded:'+jsf+" From: <?php echo $this->uri->uri_string(); ?>");
initDatatable();
});
</script>

最佳答案

您尝试过$(el).ready(...)吗?这当然应该有效。如果不是,则说明有其他问题。

<小时/> 编辑

抱歉,应该是 $("#your_xhr_loaded_content").ready()...

我一直在做这种类型的事情并且它有效,我认为关键是我正在加载文档。

主 HTML 文档,index.html:

    ...
<body>
...
<div id="activity_content">
</div>
...
<script type="text/javascript" src="js/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</body>
</html>

main.js:

...

function ruleManagement.loadContent() {
$.ajax({
url: "subdocs/ruleMgmt.html",
cache: false,
success: function(html) {
$("#activity_content").html(html);
}
}
}

ruleManagement.onReady = function(event) {
// Init contents of the rule_management_pane
...
}

HTML 子文档,ruleMgmt.html

<div id="rule_management_pane">
<!-- Content here -->
...
</div>
<script type="text/javascript" language="JavaScript">
jQuery("#rule_management_pane").ready(ruleManagement.onReady);
</script>

如果我调用 ruleManagement.loadContent(),则在成功加载 div#rule_management_pane 后调用 ruleManagement.onReady()。我不能肯定地说 onReady 在 div#rule_management_pane 插入 #activity_content 之前被调用,但我认为情况就是如此。

关于javascript - 继续尝试函数,直到加载所需的 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7729863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com