编辑:示例:
编辑2:聊天中找到的解决方案:
不知道我是否正确理解你,但你是通过AJAX加载导航的内容吗?这不是太复杂了吗?通常,您可以让PHP生成整个导航,并使用CSS隐藏不需要的部分。这有很多优点:更少的服务器负载,更好的用户体验。。。
我从数据库中构建导航,在那里我请求不同类别的项目。所以基本上我的导航有两个部分:
第一部分是类别的导航(文化、网络设计等)。如果我点击这个,我会询问我的数据库中有这个类别的项目,并用PHP:创建新的链接
$query="SELECT * FROM projects WHERE category="$category"";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
$i=0;
while ($i < $num) {
$title=mysql_result($result,$i,"title");
$id=mysql_result($result,$i,"id");
echo "<div class="sublink" data-id="$id" ><a href="#">$title<br />";
$i++;
}
但我似乎不能用jQuery从主页调用这些链接,就像我对类别所做的那样:
<div class="link" data-subsite="design"><a href="#"> design *</a></div>
$(document).ready(function(){
$('.link').click(function(){
var subsite = $(this).data('subsite');
$('#naviLeftContent').load('php/getNavi.php?category='+subsite);
});
});
现在,我想对我的子导航做或多或少相同的事情,将特定的text/title/info加载到正确的div中。但是我的子导航中新生成的div似乎不在我的源代码中,所以JavaScript无法识别它们。
您似乎在搜索jQuery.on()
(即jQuery.live()
,自版本1.7起已弃用):
为现在和将来与当前选择器匹配的所有元素附加一个事件处理程序
编辑:示例:
HTML:
<div id="menu">
<div id="category1">
<a href="#">link 1</a>
<a href="#">link 2</a>
</div>
<div id="category2"></div>
</div>
JS:
$(document).ready(function(){
// Attach click handler
$(document).on("click", "#menu a", function(){
alert("click!");
});
// Now load menu content, click handler will also work for this
$("#category2").load("content.php");
});
编辑2:聊天中找到的解决方案:
$('.link').click(function(){
var subsite = $(this).data('subsite');
$('#naviLeftContent').load('php/getNavi.php?category='+subsite);
});
$(document).on("click", ".sublink", function(){
var subsite = $(this).data('subsite');
$('#textContent').load('php/subsite.php?page='+subsite);
});
不知道我是否正确理解你,但你是通过AJAX加载导航的内容吗?这不是太复杂了吗?通常,您可以让PHP生成整个导航,并使用CSS隐藏不需要的部分。这有很多优点:更少的服务器负载,更好的用户体验。。。
此外,在PHP中迭代MySQL的结果在这样做时可读性要高得多:
$result = mysql_query($query);
while ($row = mysql_fetch_object($result)) {
echo $row->title;
}