Javascript 超链接上的event.preventDefault()不起作用
我知道这个问题已经讨论过很多次了,这就是为什么我阅读了关于这个问题的大多数主题,这些主题已经在StackOverflow上打开了,但是没有一个建议对我有帮助 我有一个div元素的列表,每个元素包含一个超链接和一个带有附加信息的span元素。跨度元素最初是隐藏的,只要单击同级锚点元素,就需要对其进行切换Javascript 超链接上的event.preventDefault()不起作用,javascript,jquery,html,javascript-events,event-handling,Javascript,Jquery,Html,Javascript Events,Event Handling,我知道这个问题已经讨论过很多次了,这就是为什么我阅读了关于这个问题的大多数主题,这些主题已经在StackOverflow上打开了,但是没有一个建议对我有帮助 我有一个div元素的列表,每个元素包含一个超链接和一个带有附加信息的span元素。跨度元素最初是隐藏的,只要单击同级锚点元素,就需要对其进行切换 <div class="politician"> <a href=""> Антонијо Милошоски </a>
<div class="politician">
<a href="">
Антонијо Милошоски
</a>
<span class="additional" style="display: none">
2013ВМРО-ДПМНЕ1997-1
</span>
</div>
<div class="politician">
<a href="">
Силвана Бонева
</a>
<span class="additional" style="display: none">
2013ВМРО-ДПМНЕ1991-1
</span>
</div>
我的问题已经在标题中说明了。我希望显示隐藏的元素,但是页面会被刷新。我想我使用preventDefault()方法的方式一定有问题
编辑
下面是生成div.political元素的代码片段
function populateList(politicians) {
var politlist = $("#list").html("");
for (var i in politicians) {
var person = politicians[i];
var politinfo = "<div class=\"politician\"><a href=\"\">" + person.name + " " + person.surname + "</a><span class=\"additional\" style=\"display: none\">" + person.lastserved;
for (var j in person.member)
{
var membership = person.member[j]
politinfo += membership.party + membership.enrol + membership.leave;
}
politinfo += "</span></div>";
$(politinfo).appendTo(politlist);
}
}
功能大众列表(政客){
var politlist=$(“#list”).html(“”);
for(政客中的var i){
var person=政治家[i];
var politinfo=”“+person.lastserved;
适用于(var j个人会员)
{
var成员=个人成员[j]
politinfo+=会员资格。政党+会员资格。注册+会员资格。休假;
}
政治信息+=”;
$(politinfo).appendTo(politilist);
}
}
之所以会发生这种情况,是因为在向html添加click事件侦听器时未加载html。
将代码包装在document.ready函数中,如下所示:
$(function(){
$('.politician a').click(function (e) {
var $this = $(this).parent().find('span');
$(".politician span").not($this).hide();
$(this).toggle();
e.preventDefault();
});
});
这是因为在向html添加click事件侦听器时未加载html。 将代码包装在document.ready函数中,如下所示:
$(function(){
$('.politician a').click(function (e) {
var $this = $(this).parent().find('span');
$(".politician span").not($this).hide();
$(this).toggle();
e.preventDefault();
});
});
由于要动态添加元素,因此需要使用:
由于要动态添加元素,因此需要使用:
代码看起来不错。dom准备好了吗?你没有动态添加任何
div.political
元素,是吗?效果很好->@billyonecan实际上我是这样做的。现在我正在编辑开场白,添加我用来生成元素的代码。代码看起来不错。dom准备好了吗?你没有动态添加任何div.political
元素,是吗?效果很好->@billyonecan实际上我是这样做的。现在我正在编辑开场白,添加我用来生成元素的代码。
$('#list').on('click', '.politician a', function(e) {
// your code
});