event.preventdefault()在某些地方不起作用

时间:2018-03-22 03:58:52

标签: javascript jquery html json

嗨!我正在写一个基于json的小型数据库网站作为学校项目。我的代码存在以下问题。

我想在不刷新页面的情况下在加载新内容的页面上建立链接。为了服务这个过程,我使用带有jquery代码的<a>标签来阻止链接刷新页面,如下所示:

$("#sorter").click(function (e) {
    e.preventDefault();
    name = look_for_index($("#artist_input").val(), artist_lite_dict, "name");
    global.load_artist();
});

在上面的情况下,这是有效的,但在下面的情况下,它只是拒绝工作,我不知道为什么。我试过让我认识的每个人都知道Js帮助我,但人们只是让人感到困惑。 &#34;以下代码&#34;:

$(".art").click(function(e){
    console.log("CLICK");
    e.preventDefault();
    name = this.parent().sibling(".title").val()
    title = this.children(span).val();
    look_for_index(name, artist_full_dict, "name")
    global.print_art(title);
});

与此代码相关的HTML是在javascript中生成的,但如果错误与html相关,则以下是模板对象:

const art_list_template = ({
    title,
    date,
    index
}) => `
<li class="${title} article art">
    <a href="" class="art">
        <span class="title art">
           ${title}
        </span>
        <p>
            Date: ${date}, Index: ${index}
        </p>
    </a>
</li>
`

链接到github上的整个项目:https://github.com/Stephan-kashkarov/Collector

-Thanks! 斯蒂芬

1 个答案:

答案 0 :(得分:4)

.preventDefault需要在其所在函数的参数上调用。例如,而不是

function (e) {
  event.preventDefault();

你应该做

function (e) {
  e.preventDefault();

如果event是参数名称,请使用event,但通常是其他内容。当您遇到错误时,请检查您的控制台以查看它的内容 - 它应该给您一个错误,例如event is not defined,当您拥有该代码时。