【发布时间】:2015-10-06 19:43:00
【问题描述】:
这应该很简单,但我无法理解它,如果有任何帮助,我将不胜感激。
我的 php 主页底部有一些 JavaScript。这个脚本所做的只是它在加载窗口时调用一个函数,并回显导航,这非常有效。
问题是当 nav.已填充,我在主页上的 javascript 无法与之交互。
//Ajax that loads the nav
window.onload = function(){
function loadContent(where,what) {
if (window.XMLHttpRequest){
var xmlhttp = new XMLHttpRequest();
} else {
var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
document.getElementById(where).innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open('GET', what,true);
xmlhttp.send();
};
//the nav function is called directly under it
loadContent('navigator','include/navigation.php');
//after the above is loaded, any javascript written to call an element from the loaded html does not work.
};
navigation.php 只包含一些要回显的 html,这也很有效。
echo'
<ul class="nav navbar-nav navbar-right animate animated fadeInDown">
<li class="nav-item"><a href="#">Explore</a></li>
<li class="nav-item"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Select Country<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Worldwide</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">USA</a></li>
<li><a href="#">UK</a></li>
<li><a href="#">Nigeria</a></li>
<li><a href="#">Ghana</a></li>
<li><a href="#">Kenya</a></li>
<li><a href="#">South Africa</a></li>
</ul>
</li>
<li class="nav-item"><a href="#">Calender</a></li>
<li class="nav-item"><a href="#" data-toggle="modal" data-target="#login" id="loginbutton">Log In</a></li>
<li class="nav-item"><a href="#" id="logout">Log Out</a></li>
'
现在我的困境是上面的内容已经加载了。我在 window.onload 函数中编写的任何 JavaScript 都不适用于上述任何元素。我会寻求任何帮助。请使用香草js,所以没有jquery。谢谢
【问题讨论】:
-
那是因为从您的 ajax 调用加载的 html 不在 DOM 元素中。您需要做的是从其父元素开始搜索元素,例如:$(body).on ('click', '.nav-item', function() {});
-
你可以使用监听器。这样,它将继续寻找页面加载后添加的任何元素
-
为什么我们不能把 jQuery 排除在外,至少有一个 js 问题
-
我能得到一个纯 js 的例子,而不是 jquery。谢谢
标签: javascript php html ajax