jQuery的负载一旦
问题描述:
我有这样的代码:jQuery的负载一旦
<script>
$(document).ready(function() {
$('#lnk').click(function(e) {
e.preventDefault();
url = $(this).attr('href');
$("#content").load(this.href);
});
});
</script>
<a href="http://google.com" id="lnk">Google</a>
<a href="http://gmail.com" id="lnk">Gmail</a>
<div id="content">
</div>
当我点击第一个链接(谷歌),它的工作原理和加载内容,以我的内容股利。但是,当我点击第二个链接(gmail)时,它不起作用。
任何人都可以帮助我理解这种行为吗?
答
ID是唯一的,你不能有多个具有相同ID的元素($('#lnk')
将得到第一个元素)。使用类代替
<script>
$(document).ready(function() {
$('.lnk').click(function(e) {
e.preventDefault();
$("#content").load(this.href);
});
});
</script>
<a href="http://google.com" class="lnk">Google</a>
<a href="http://gmail.com" class="lnk">Gmail</a>
此外,这是行不通的,因为你不能使用.load
加载任意URL。这就是所谓的same origin policy。
答
JQuery将事件附加到具有您指定ID的第一件事上,因为文档应该只有一个具有该ID的元素。试试这个:
<script>
$(document).ready(function() {
$('.lnk').on('click', function(e) {
e.preventDefault();
$("#content").load(this.href);
});
});
</script>
<a href="http://google.com" class="lnk">Google</a>
<a href="http://gmail.com" class="lnk">Gmail</a>
<div id="content">
</div>
+0
感谢你们所有人。正如我所说我是一个noob,我想我学得很慢:)谢谢大家,再次。 – 2012-07-24 19:06:59
+0
没问题。我只是更新了一点,以切换到新的on()语法。 – PCasagrande 2012-07-24 19:12:11
它们都不工作。 :X – Esailija 2012-07-24 18:47:20
您的HTML不是有效的!为什么2个元素的ID相同? – Shyju 2012-07-24 18:48:04
为什么在你的'url'变量中保存href,然后不在下一行使用它?元素ID必须是唯一的,您可能想要切换到类 – MrOBrian 2012-07-24 18:49:50