Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 超链接上的event.preventDefault()不起作用_Javascript_Jquery_Html_Javascript Events_Event Handling - Fatal编程技术网

Javascript 超链接上的event.preventDefault()不起作用

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>

我知道这个问题已经讨论过很多次了,这就是为什么我阅读了关于这个问题的大多数主题,这些主题已经在StackOverflow上打开了,但是没有一个建议对我有帮助

我有一个div元素的列表,每个元素包含一个超链接和一个带有附加信息的span元素。跨度元素最初是隐藏的,只要单击同级锚点元素,就需要对其进行切换

<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 
});