2016-04-08 35 views
-3

所以我有两个不同的脚本。两个脚本都可以单独使用,但是当我将两个脚本添加到页面时都不行。添加类别不能与我的ajax

我使用AJAX切换页面,但后来我也希望jQuery突出显示我点击的链接,以便它可以显示“活动”页面。

我的HTML:

<nav> 
    <ul id="navUl"> 
     <li class="active"><a href="#">test1</a></li> 
     <li ><a href="#">test2</a></li> 
    </ul> 
</nav> 
<div id="result"> 
    <div id="content"> 
     <p>random content</p> 
    </div> 
</div> 

我的AJAX/jQuery的

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
<script> 
    (function($){ 
     $('nav a').click(function(){ 

      var href = $(this).attr('href')+' #content'; 

      $('#result').load(href); 

      return false; 
     }); 
    })(jQuery); 
</script> 

这完美的作品,但是当我加入这剧本,突显选定的页面,然后我的AJAX不工作了。

$(function() { 
    $('#navUl li').on('click', function() { 
     $(this).parent().find('li.active').removeClass('active'); 
     $(this).addClass('active'); 
    }); 
}); 
+2

有你的代码中没有'span's。 $(function(){});在body准备就绪时运行,这意味着如果找不到一个元素(在这种情况下,'#navUl span',将不会调用任何代码。您应该检查控制台以查看是否有错误。 – Lemmmy

+0

可能在你的代码中有错误,那么我假设你运行了第二个JS块之前的AJAX块,当脚本错误时,它没有被执行,除非异常被捕获。 – Lemmmy

+0

@Lemmmy哎呀,我很抱歉,那是因为我曾尝试在li上缠绕一段时间来看看它是否会起作用,因为这两个函数中不会使用相同的标签,但它不起作用......而我只是忘了编辑回去 –

回答

2

您从nav a单击事件返回false,这将阻止事件冒泡到li

更改为:

(function($){ 
     $('nav a').click(function(e){ 

      e.preventDefault(); 

      var href = $(this).attr('href')+' #content'; 

      $('#result').load(href); 
     }); 
    })(jQuery);