如何使用导航栏触发事件?

时间:2016-08-17 12:16:11

标签: javascript jquery html twitter-bootstrap

我已经好几天了。 我想要做的是使用导航菜单中的选项,我必须在java脚本/ jquery中触发onload事件。然而,事件并没有激发。我也试过使用onselect和onclick,但没有用。 该事件应该将数据带入我的模板。 也许我犯了一个我无法看到的错误。或者还有另一种更好的方法吗?

这是我的导航栏。你可以看到我试图使用的onselect功能。

<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
    <div class="container">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="index.html">MEK Steel</a>
        </div>
        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav navbar-right">
                <li>
                    <a href="home.html">Home</a>
                </li>
                <li class="dropdown" >
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">About <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li>
                            <a href="about.html#about">About Us</a>
                        </li>
                        <li>
                            <a  href="about.html#history">History</a>
                        </li>
                        <li>
                            <a  href="about.html#privacyPolicy" >Privacy Policy</a>
                        </li>
                        <li>
                            <a  href="about.html#termsAndConditions">Terms and Conditions</a>
                        </li>
                        <li>
                            <a href="about.html#disclaimer">Disclaimer</a>
                        </li>
                    </ul>
                </li>
                <li class="dropdown" class="active">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Manufactured Products <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li onselect = "steelProducts()">
                            <a href="steelProducts.html">Steel Products</a>
                        </li>
                        <li onselect = "steelDoors()">
                            <a href="steelDoors.html">Steel Doors</a>
                        </li>
                        <li onselect="digitalSafes()">
                            <a href="digitalSafes.html">Digital Safes</a>
                        </li >
                        <li onselect="securityEq()">
                            <a href="securityEquipment.html">Security Equipment</a>
                        </li>
                        <li onselect="storageSol()">
                            <a href="storageSolutions.html">Storage Solutions</a>
                        </li>
                        <li onselect="steelFur()"> 
                            <a href="steelFurniture.html">Steel Furniture</a>
                        </li>
                    </ul>
                </li>
                 <li>
                    <a href="services.html">Services</a>
                </li>
                <li>
                    <a href="contact.html">Contact</a>
                </li>
            </ul>
        </div>
        <!-- /.navbar-collapse -->
    </div>
    <!-- /.container -->
</nav>

这是我的javascript。我只写了一个用于测试的目的

function showTemplate(template, data){
var html    = template(data);
console.log(html);
$('#content').html(html);
}    
function securityEq(){
source   = $("#productsTemplate").html();
secEqTemp = Handlebars.compile(source); 
showTemplate(secEqTemp, data);
}

3 个答案:

答案 0 :(得分:1)

$(document).ready(function () {
  $('a').on('click', function (){
    alert($(this).html());
  });
});

您需要引用锚点而不是列表标记。

Fiddle

答案 1 :(得分:0)

在你解释了你想要做什么之后

  

@Chax我试图让onselect在标签之前工作。就像我想加载数据并将其放在我的模板中,然后显示页面。

我想出了这段代码

&#13;
&#13;
$(document).ready(function(){
  $('a').click(function(){ // Bind a click event to my <a> tag
    var linkValue = $(this).attr('data-link'); // Retreive the value of data-link aka where we want to go
    // Do something, your logic
    
    
    window.location.href = linkValue; // Load the new page
    });
  });
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a data-link="http://www.google.com">I'm a link</a>
<!-- Notice that the tag below doesn't have a href attribute but does have a data-link attribute-->
&#13;
&#13;
&#13;

这段代码的作用很简单。我们将click事件绑定到DOM中的每个<a>标记。当我们点击其中一个标签时,我们执行该功能。请注意,您可以使用switch区分按钮。然后我们调用window对象并使其调用我们想要的页面。

答案 2 :(得分:-1)

检查这个jsfiddle当我使用<script>将js代码放在html中时,它可以正常运行并触发事件