Javascript 如何使用ajax在文件中加载特定的div/类?
我有一个名为main.html的文件,其中包含几个div,每个div有2个类: 第一个是它们的特定类第二个是名为Javascript 如何使用ajax在文件中加载特定的div/类?,javascript,jquery,css,ajax,web,Javascript,Jquery,Css,Ajax,Web,我有一个名为main.html的文件,其中包含几个div,每个div有2个类: 第一个是它们的特定类第二个是名为菜单项的类,我用它来确定单击时是否会触发事件 该文件包含以下内容: <div id="load-here"> </div> <div class="item-1 menu-item"> click this </div> <div class="menu-item> <!-- some image
菜单项的类,我用它来确定单击时是否会触发事件
该文件包含以下内容:
<div id="load-here">
</div>
<div class="item-1 menu-item">
click this
</div>
<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看看这个:
似乎有几个问题:
这样:$(“div”)。单击(function()…
您正在注册所有可用的div
上的单击。这可能会导致奇怪的行为。最好使用:$(“div.menu-item”)。单击(…
确保您理解回调函数中的上下文和事件目标。有时这会欺骗您,因为调用的上下文可能不同。如果您将事件作为显式参数处理并检查事件目标,事情会更清楚
我想您可能想为gallery.html提供一个参数,但正如@charlietfl提到的,没有.class
。但是,在DOM中有一个。最好尝试使用jQuery$().attr('class')
。此外,该参数需要一个分隔符:gallery.html?参数
总而言之,我的建议如下:
$("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(“该特定项”)…
您是使用web服务器运行此项,还是使用文件://
直接在浏览器中打开该html文件?可能的重复项没有。此类…未定义。即使有,它也将包含”菜单项“
和它前面的空格为什么要将此.class添加到url?您可以使用此.className,但这是什么意思?@kabirbaidhya您是对的,我正在本地环境的文件://上运行它。它不适用于此吗?”?
$("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);
}
});