Jquery 导航栏href上的onclick事件

Jquery 导航栏href上的onclick事件,jquery,twitter-bootstrap-3,Jquery,Twitter Bootstrap 3,这是我的导航栏内容 <div class="col-md-3"> <div class="bs-docs-sidebar hidden-print affix" role="complementary"> <ul class="nav bs-docs-sidenav" id="titles"> </ul> </div> </div> <script type="text/jav

这是我的导航栏内容

<div class="col-md-3">
 <div class="bs-docs-sidebar hidden-print affix" role="complementary">
      <ul class="nav bs-docs-sidenav" id="titles">

      </ul>
    </div>
  </div>

<script type="text/javascript">
$(function(){
    var html = '';
    $("td > h1 > a").each(function(){
        html = html + '<li><a href="#" data-scroll="' + $(this).attr('data-anchor') + '">' + $(this).text() + '</a></li>';
    });
    document.querySelector('#titles').innerHTML = html;
});

$('#titles > li > a').on('click', function() {
    console.log('called');
    var scrollAnchor = $(this).attr('data-scroll'),
        scrollPoint = $('tbody[data-anchor="' + scrollAnchor + '"]').offset().top - 28;
    $('body,html').animate({
        scrollTop: scrollPoint
    }, 500);
    return false;
});

$(函数(){ var html=''; $(“td>h1>a”)。每个(函数(){ html=html+'
  • '; }); document.querySelector(“#titles”).innerHTML=html; }); $('#titles>li>a')。在('click',function()上{ log('called'); var scrollAnchor=$(this).attr('data-scroll'), scrollPoint=$('tbody[data anchor=“”+scrollAnchor+'“]').offset().top-28; $('body,html')。设置动画({ scrollTop:scrollPoint }, 500); 返回false; });
    第一个函数将根据html内容填充数据。第二个函数将处理导航栏内容中的单击事件

    但是,第二个函数永远不会执行


    有人能告诉我如何解决这个问题吗?

    当您创建HTML时。

    你应该使用。您必须使用委托事件方法

    一般语法

    $(document).on(event, selector, eventHandler);
    
    理想情况下,您应该将
    文档
    替换为最近的静态容器。在您的案例中,它是
    “#titles”
    。所以使用

    $('#titles').on('click', 'li > a', function() {
        console.log('called');
        var scrollAnchor = $(this).attr('data-scroll'),
            scrollPoint = $('tbody[data-anchor="' + scrollAnchor + '"]').offset().top - 28;
        $('body,html').animate({
            scrollTop: scrollPoint
        }, 500);
        return false;
    });
    

    当您创建HTML时。

    你应该使用。您必须使用委托事件方法

    一般语法

    $(document).on(event, selector, eventHandler);
    
    理想情况下,您应该将
    文档
    替换为最近的静态容器。在您的案例中,它是
    “#titles”
    。所以使用

    $('#titles').on('click', 'li > a', function() {
        console.log('called');
        var scrollAnchor = $(this).attr('data-scroll'),
            scrollPoint = $('tbody[data-anchor="' + scrollAnchor + '"]').offset().top - 28;
        $('body,html').animate({
            scrollTop: scrollPoint
        }, 500);
        return false;
    });
    

    当您创建HTML时。

    你应该使用。您必须使用委托事件方法

    一般语法

    $(document).on(event, selector, eventHandler);
    
    理想情况下,您应该将
    文档
    替换为最近的静态容器。在您的案例中,它是
    “#titles”
    。所以使用

    $('#titles').on('click', 'li > a', function() {
        console.log('called');
        var scrollAnchor = $(this).attr('data-scroll'),
            scrollPoint = $('tbody[data-anchor="' + scrollAnchor + '"]').offset().top - 28;
        $('body,html').animate({
            scrollTop: scrollPoint
        }, 500);
        return false;
    });
    

    当您创建HTML时。

    你应该使用。您必须使用委托事件方法

    一般语法

    $(document).on(event, selector, eventHandler);
    
    理想情况下,您应该将
    文档
    替换为最近的静态容器。在您的案例中,它是
    “#titles”
    。所以使用

    $('#titles').on('click', 'li > a', function() {
        console.log('called');
        var scrollAnchor = $(this).attr('data-scroll'),
            scrollPoint = $('tbody[data-anchor="' + scrollAnchor + '"]').offset().top - 28;
        $('body,html').animate({
            scrollTop: scrollPoint
        }, 500);
        return false;
    });
    

    @克里斯托弗,太好了example@ChristopherW伟大的example@ChristopherW伟大的example@ChristopherW,很好的例子