在<;a></a>;从通过Javascript执行

在<;a></a>;从通过Javascript执行,javascript,html,Javascript,Html,因此,我的HTML中有以下代码: <li class="" id="toolbar_section"><a id="toolbar_section_child" href="#foobar" onclick="return toolbarSetSection(this);" data-toggle="checkpoint">foobar</a></li> 用我的Javascript写的是: <script type="text/java

因此,我的HTML中有以下代码:

<li class="" id="toolbar_section"><a id="toolbar_section_child" href="#foobar" onclick="return toolbarSetSection(this);" data-toggle="checkpoint">foobar</a></li>
  • 用我的Javascript写的是:

    <script type="text/javascript">
       function toolbarSetSection(event){
           //some logic which leads to
           return false;
       };
    </script>
    
    
    函数toolbarSetSection(事件){
    //一些逻辑导致
    返回false;
    };
    

    但是,href仍然执行。。。我检查了许多类似的主题,并给出了一些答案,如event.preventDefault();但是它们也帮不了我。

    返回false
    通常应该可以工作,但是您的
    工具栏设置部分
    函数中可能有错误


    调用
    event.preventDefault()
    通常也会起作用。但是,在您的情况下,您希望函数以
    event
    作为第一个参数调用,而HTML代码以link对象作为第一个参数调用
    onclick=“return toolbarSetSection(this);”
    。可能您想调用
    toolbarSetSection(事件)

    在HTML中,您应该将
    onclick=“return toolbarSetSection(this);”
    更改为
    onclick=“toolbarSetSection(event);”
    ,然后使用
    event.preventDefault()

    您的完整代码是:

    <li class="" id="toolbar_section"><a id="toolbar_section_child" href="#foobar" onclick="toolbarSetSection(event);" data-toggle="checkpoint">foobar</a></li>
    

    获得预期行为的更好方法,无需在标记上添加
    onclick

    <script>
    document.getElementById('toolbar_section_child').on('click', function(e){
        e.preventDefault();
    })
    </script>
    
    HTML


    jsfiddle所以你不能说它不工作:):

    ooops I did event.preventDefault()但它抛出的只是一个typeerror在为时已晚之前删除它xd你是否需要使用
    href
    ?因为如果不这样做,只需使用
    而不是
    。是的,javascript和jquery逻辑处理是否禁用HREF触发。@ZivWeissman我个人并不真正关心点lol,我还是一名学生,所以我想目前的学习对我来说更重要。据我所知,没有错误,因为逻辑执行完全正常,网络控制台没有显示任何错误。至于工具栏设置部分(事件);它也不起作用。你是如何注意到它不起作用的?你使用的是哪种浏览器?在MacOS atm上使用Chrome,它不起作用,因为它仍然导致我被重定向到另一个部分。嗯,在我目前的情况下,这将不是非常有效,因为我使用嵌入式ruby生成元素,因为整个页面是非常动态的。如果我采用这种方法,很多javascript都会加载到页面中,而不是只加载一段javascript就可以处理来自任何元素的请求。我也要感谢你抽出时间来帮助我,真的很感激@Cira明白了:)也许你可以给
    a
    标记一个通用的类名来防止它们的默认行为,并将侦听器设置为click eventOh right,那次我试着这么做,但不知怎么的,它不起作用,javascript只是拾取最初加载到页面上的点击,而没有拾取使用AJAX加载的点击,所以我放弃了,使用了onclick哈哈。嗨,谢谢你花时间帮我,我只是尝试了一下,不知怎么地通过了这两个警报,然后它触发了href。它实际上不起作用了…:(现在我想起来了,数据是否可以切换=“checkpoint”不知怎的影响了它?我更改了href以转到谷歌,现在我正在点击这个链接,没有重定向。啊,好吧,我知道了,其中一个Javascript与我正在使用的一个发生了冲突,并以某种方式产生了冲突。感谢您的帮助!您的问题很可能与其他问题有关。这里的代码自行工作。Stephan和Travis Acton的解决方案也能起作用。如果你发布其余的代码,我们可能会提供帮助。啊,好的,我知道了,其中一个Java脚本与我正在使用的脚本发生冲突,并以某种方式产生了冲突。谢谢你的帮助!
    <script>
    document.getElementById('toolbar_section_child').on('click', function(e){
        e.preventDefault();
    })
    </script>
    
    document.addEventListener('click',function(e){
       /*
       if(e.target && e.target.id == 'toolbar_section_child'){
           e.preventDefault();
       }
       */
       // using a common class name
       if(e.target && e.target.className.split(" ").indexOf("toolbar_section_child") != -1){
           e.preventDefault();
       }
    })
    
    <ul>
     <li class="" id="toolbar_section2"><a id="toolbar_section_child" href="#" onclick="toolbarSetSection()"  data-toggle="checkpoint">foobar</a></li>
    </ul>
    
    function toolbarSetSection()
    {
     alert('started');
     event.preventDefault();
     alert('weee');
    }