jquery单击事件只工作一次
我整个上午都在研究这个问题,但我遗漏了一些东西 以下是基本设置和代码:jquery单击事件只工作一次,jquery,jquery-click-event,Jquery,Jquery Click Event,我整个上午都在研究这个问题,但我遗漏了一些东西 以下是基本设置和代码: <script src="/mwebphoto/js/jquery-2.0.3.js"></script> <div id="slideshow"> </div> </head> <body> <ul id="gallery_id"> <li id="newYork">New York</li> <l
<script src="/mwebphoto/js/jquery-2.0.3.js"></script>
<div id="slideshow">
</div>
</head>
<body>
<ul id="gallery_id">
<li id="newYork">New York</li>
<li id="disconnection">Disconnexion</li>
<li id="jackAtSea">Jack at Sea</li>
</ul>
<script>
$(document).ready(function () {
$("#gallery_id li").click(function () {
var htmlTitle = (this.id);
$.ajax({
type: "GET",
url: "/mwebphoto/xml/albums.xml",
dataType: "xml",
success: function (xml) {
$(xml).find('album').each(function () {
var xmlAlbum = $(this);
var xmlTitle = $(this).find('title').text();
var xmlEmbedCode = $(this).find('embedCode').text();
if (xmlTitle == htmlTitle)
alert(xmlTitle)
$("#slideshow").replaceWith(xmlTitle)
});
}
});
});
});
</script>
警报工作正常。但是.replaceWith将第二个li断开连接放在div中,无论我单击哪个列表项
你可以在这里看到:
应该是
$("#gallery_id li").on('click', function(e) {
alert(this.id);
});
或
或
试试这个
更新:
为了显示差异,我创建了
希望您能找到不同之处。如果您的html是
<ul id="gallery_id">
<li>1</li>
<li>2</li>
</ul>
它现在做了什么,应该做什么呢?从语义的角度来看,假设单击列表项会改变某些内容,它们可能会包含锚定标记。在运行ajax回调时,是否替换了click目标元素?这会杀死你的点击处理程序。你试过这个吗$文档。单击“图库id li”功能E{…因为实际上您正在将处理程序绑定到gallery_id li中的每个li元素,但是您没有。您真的在标记中有吗?我认为这是无效的html。我认为问题在于:ifxmlTitle==htmlTitle$slideshow.replaceWithxmlTitle alertxmlTitle如果.replaceWithIs评论。但是当.replaceWith激活时,警报会在所有三个选项中循环,然后我无法再次单击。忽略上次的答复。情况如下:我认为问题出在这里:ifxmltTitle==htmlTitle alertxmlTitle$slideshow.replaceWithxmlTitle警报工作正常。但是.replaceWith将seco无论我单击哪个列表项,都会在中断开连接。@mweb202是否可以共享xml文件?此处的“$xml”xml文件是什么:$xml部分查找节点相册的子项。该部分似乎工作正常。以下是指向测试页的链接:
$("#gallery_id li").on('click', function(e) {
alert(this.id);
});
$("#gallery_id").on('click','li', function () {
alert(this.id);
})
$(document).on('click','#gallery_id li', function () {
alert(this.id);
})
<ul id="gallery_id">
<li>1</li>
<li>2</li>
</ul>
$("#gallery_id").on('click','li', function () {
// your code
})