捕获点击链接与jquery

时间:2014-03-19 15:54:08

标签: jquery

在我的项目中,我有以下页面,这是一个仪表板,其中包含指向我应用程序所有部分的链接:

    <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <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="#">LigaDesportiva</a>
        </div>
        <div class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
            <li><a href="clube.html">Clubes</a></li>
            <li><a href="dirigente.html">Dirigentes</a></li>
            <li><a href="jogadore.html">Jogadores</a></li>
            <li><a href="liga.html">Ligas</a></li>
            <li><a href="usuario.html">Usu&aacute;rios</a></li>
          </ul>
            <ul class="nav navbar-nav navbar-right">
                <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown">${usuario.nome} <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="usuario_perfil.html">Perfil</a></li>
                        <li><a href="usuario_historico.html">Hist&oacute;rico</a></li>
                        <li><a href="logout.html">Sair</a></li>
                    </ul>
                </li>
            </ul>
        </div><!--/.nav-collapse -->
      </div>
    </div>

    <div class="container">
        <div id="data"></div>    
    </div><!-- /.container -->

JS调用

<script src="js/jquery-2.1.0.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/bootstrap-dialog.min.js"></script>

页面END的JS

    $('a').click(function(){
        $.get($('a').attr('href'), function(destino){
            alert('destino = '+destino);
        });
        BootstrapDialog.show({
            title: 'Draggable Dialog',
            message: 'destino = '+destino+' .Try to drag on dialog title to move your dialog.',
            draggable: true
        });
    });

页面末尾的jquery代码应该捕获&#39;点击&#39;事件并显示警报(现在仅用于测试)和BootstrapDialog,但这是机器人发生的事情。我做错了什么?

3 个答案:

答案 0 :(得分:1)

在解析页面之前,可以调用将处理程序绑定到click事件的代码$('a').click(function(){ ,在这种情况下,选择器$('a')不是&#39;获得锚元素。

此外,在处理程序中,您在文档中所有链接上执行$ .get。我假设您只想要点击的链接,您可以使用$(this)获得。

最后,您需要阻止元素上的click事件的默认行为。

试试这个,而不是:

<script>
    // The ready event handler is called after the page is ready.
    $().ready(function () {
        $('a').click(function(e) {
            e.preventDefault();

            $.get($(this).attr('href'), function(destino) {
                alert('destino = '+destino);
            });
            BootstrapDialog.show({
                title: 'Draggable Dialog',
                message: 'destino = '+destino+' .Try to drag on dialog title to move your dialog.',
                draggable: true
            });
        });
    });
</script>

答案 1 :(得分:0)

将页面底部的JS部件更改为:

$('a').click(function(event){
        event.preventDefault();
        $.get($('a').attr('href'), function(destino){
            alert('destino = '+destino);
            BootstrapDialog.show({
                    title: 'Draggable Dialog',
                    message: 'destino = '+destino+' .Try to drag on dialog title to move your dialog.',
                    draggable: true
            });
        });

    });

如果这也不起作用,也许你应该等到DOM就绪了。但不确定这一点,因为您的JS代码位于页面的底部,因此在执行脚本块时应加载HTML。

您还需要event.preventDefault();取消链接默认点击操作。

答案 2 :(得分:0)

  write your code inside document.ready()

   <script>
   $(document).ready(function(){
     $('a').click(function(){
      $.get($('a').attr('href'), function(destino){
        alert('destino = '+destino);
     });
     BootstrapDialog.show({
        title: 'Draggable Dialog',
        message: 'destino = '+destino+' .Try to drag on dialog title to move your dialog.',
        draggable: true
    });
   });
 });
</script>