0

当用户单击菜单链接时,我希望能够播放 jQuery 动画。

在我的脚本中,我阻止了链接的默认行为,将锚标记的 href 属性的值保存在一个变量中,播放动画,然后将窗口重定向到与保存的 href 值对应的 URL:

<script>
jQuery(document).ready(function($) {
$('.main-navigation a').click(function(event) {
    event.preventDefault();

    var href = this.href;

    $('#main').slideUp(500,
    function() {
        window.location = href;
    });
  });
});
</script>

问题是,我的导航菜单中的一些锚标签没有 href 属性,因为它们的唯一功能是单击时打开子菜单。当我单击这些菜单项时,会播放动画,然后重新加载相同的页面。

我想从脚本的行为中排除没有 href 的锚标记。

我的解决方案是只为那些实际具有 href 属性的锚标记保存 href。除了,我不知道该怎么做。

所以,我的问题是:我应该如何用 jQuery 来表达这个?

if (anchor tag has href attribute) {
   var href = this.href;
}

或者也许有更好的解决方案?

4

3 回答 3

11

代替 :

$('.main-navigation a').click

做 :

$('.main-navigation a[href]').click

jQuery 接受所有 CSS 选择器甚至更多!

这里是括号选择器的信息。

于 2013-05-31T14:26:24.073 回答
3

只需使用 anif来测试您的 href 的真实性:

var href = this.href;

if (href) {
  $('#main').slideUp(500,
  function() {
      window.location = href;
  });
}
于 2013-05-31T14:26:09.867 回答
2

将您的选择器更改为:

$('.main-navigation a[href]').click(function(event) {
于 2013-05-31T14:26:59.013 回答