我整个上午一直在研究这个问题并且遗漏了一些东西。
以下是基本设置和代码:
<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>
(注意,我已经根据答案编辑了这个,从这里开始)
我认为问题在于:
if(xmlTitle==htmlTitle)
alert(xmlTitle)
$("#slideshow").replaceWith(xmlTitle)
警报工作正常。但是无论我点击哪个列表项,.replaceWith都会在div中放入第二个li(断开连接)。
您可以在此处看到:http://mwebphoto.com/mwebphoto/html/2ndJqueryPage.html
答案 0 :(得分:2)
$("#gallery_id li").on('click', 'li', function(e) {
//represents li within li
});
它应该是
$("#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);
})
试试这个。
更新:
为了显示差异,我创建了
希望你找到差异。
答案 1 :(得分:0)
如果你的html是
<ul id="gallery_id">
<li>1</li>
<li>2</li>
</ul>
尝试使用此代码。当事件直接发生在绑定元素上时,不会调用处理程序,但仅适用于与选择器匹配的后代(内部元素)。
$("#gallery_id").on('click','li', function () {
// your code
})