我有一个名为main.html的文件,其中包含几个div,每个div有2个类:
第一个是他们的特定类第二个是一个名为menu-item
的类,我用它来确定点击时是否会触发一个事件。
该文件包含:
<div id="load-here">
</div>
<div class="item-1 menu-item">
click this
</div>
我还有一个gallery.html文件,我希望将其加载到#load-here
div中的main.html文件中,让我们说它包含这个:
<div class="menu-item>
<!-- some image here -->
<img href="img/1.jpg />
</div>
我的脚本是:
$(document).ready(function() {
$( "div" ).click(function() {
if ( $( this ).hasClass( "menu-item" ) ) {
$("#load-here").load("gallery.html" + this.class);
}
});
});
问题:它无法正常工作。我尝试了各种变化。不知怎的,它没有加载到#load-here
div
答案 0 :(得分:3)
看看这个:http://api.jquery.com/load/
$( "#b" ).load( "article.html #target" );
答案 1 :(得分:2)
似乎有几个问题:
$( "div" ).click(function() ...
您正在注册所有div
可用的点击。这可能会导致奇怪的行为。更好用:$("div.menu-item").click( ...
this
会欺骗你,因为呼叫的上下文可能不同。如果您将事件作为显式参数处理并检查事件目标,事情会更清楚。.class
。但是,在DOM中有一个.className
。最好尝试使用jQuery $().attr('class')
。此外,该参数还需要一个分隔符:gallery.html?parameter
总结一下,我的建议是:
$("div.menu-item").click( function(event) {
var jqTarget = $(event.target).closest('.menu-item');
if ( jqTarget.hasClass( "menu-item" ) ) {
$("#load-here").load("gallery.html" + "?" + this.class);
}
});
closest()
会尝试找到最接近的匹配元素,以防点击目标不在div
本身,而是在子img
或其他位置。因此,应该使用建议中的条件来找出有关单击哪个菜单项的更具体信息:if ( jqTarget.hasClass( "that-specific-item" ) ...