忽略jQuery中的空href

忽略jQuery中的空href,jquery,Jquery,我试图忽略jQuery函数中href属性为空的a。这是菜单: <nav id="nav-works-screen" role="navigation"> <ul id="nav-other-links"> <li class="nav-title">NICHOLAS<br/> AREHART</li><br/> <li><a href="">CV/Bio<

我试图忽略jQuery函数中href属性为空的a。这是菜单:

<nav id="nav-works-screen" role="navigation">
    <ul id="nav-other-links">
        <li class="nav-title">NICHOLAS<br/> AREHART</li><br/>
        <li><a href="">CV/Bio</a></li>
        <li><a href="">Contact</a></li>
        <li><a href="">News</a></li>
        <li><a href="<?php randLink() ?>">Link???</a></li>
    </ul>
    <ul id="nav-works">
        <li class="nav-title">WORK</li><br/>
        <li class="work"><a href="#the-speech">The Speech</a></li>
        <li class="work"><a href="#forms-derived-from-a-code">Forms Derived from a Code</a></li>
        <li class="work"><a href="#unauthorized-reproduction">Unauthorized Reproduction</a></li>
        <li class="work"><a href="">Newport Ads</a></li>
        <li class="work"><a href="">An Illegally Downloaded Film</a></li>
        <li class="work"><a href="">Hold on to Your Genre</a></li>
        <li class="work"><a href="">Autonomy</a></li>
        <li class="work"><a href="">Ikea Objects</a></li><br/>
        <li id="nav-arrows"> 
            <div class="nav-arrows">
                <a class="nav-arrow-prev" href="">&laquo;</a>
            &emsp;&emsp;
                <a class="nav-arrow-next" href="">&#187;</a>
            </div>
        </li>
    </ul>
</nav>

    尼古拉斯·阿雷哈特
  • 工作

  • &emsp&emsp;
锚定:

<div id="content" class="clrfx">

    <div id="primary" class="clrfx">
        <div id="the-speech" class="page odd the-speech">
            <div class="page-content">
                <h2>The Speech</h2>
            </div>
        </div>

        <div id="forms-derived-from-a-code" class="page even forms-derived-from-a-code">
            <div class="page-content">
                <h2>Forms Derived from a Code</h2>
            </div>
        </div>

        <div id="unauthorized-reproduction" class="page odd unauthorized-reproduction">
            <div class="page-content">
                <h2>Unauthorized Reproduction</h2>
            </div>
        </div>

    </div><!-- #primary -->

</div><!-- #content -->

演讲
从代码派生的形式
未经授权复制
下面是jQuery:

<script type="text/javascript">
    $(document).ready( function() {
        $('#nav-works-screen a').smoothScroll();

        $(document).scroll( function(){
            $('nav a').each( function(){
                var workLink = $(this);
                var work = workLink.attr('href');

                if (work != '') {

                    var workTop = $(work).offset().top;
                    var currentPos = $(window).scrollTop();
                    var winHeight = $(window).height();

                    if (currentPos >= workTop) {
                        workLink.css({'background-color':'#38FF4F'});
                        workLink.parent().siblings().children().css({'background-color':'transparent'});
                    }
                    else {
                        workLink.css({'background-color':'transparent'});
                    }
                }
            });
        });
    });
</script>

$(文档).ready(函数(){
$(“#导航工作屏幕a”).smoothScroll();
$(文档)。滚动(函数(){
$('nav a')。每个(函数(){
var workLink=$(此值);
var work=workLink.attr('href');
如果(工作!=''){
var workTop=$(work).offset().top;
var currentPos=$(窗口).scrollTop();
var winHeight=$(window.height();
如果(当前位置>=工作台){
css({'background-color':'#38FF4F'});
workLink.parent().sides().children().css({'background-color':'transparent'});
}
否则{
css({'background-color':'transparent'});
}
}
});
});
});
不幸的是,我一直收到一个错误,null的属性“top”无法读取。我不明白,如果我明确指出应该忽略任何空的工作变量,为什么工作变量会是空的。我相信这很简单,但我已经用这玩意儿把头撞在墙上一个多小时了。任何帮助都将不胜感激


编辑-这就是问题所在:
  • 我想我的随机链接php函数在使用jQuery遍历DOM时出错了,但我很好奇为什么会这样。

    这对我来说确实有效,但我不得不更改选择器

    $('nav a').each( function(){
    

    因为html摘要中没有“nav”元素。 但是你应该放一个

    alert(work);
    

    就在if语句之前,检查在空href不是空字符串的时候“work”的真正含义。

    您是否尝试过attr not选择器

        $(document).scroll( function(){
            $('nav a').each( function(){
                 // if the href evaluates to false then return false
                 if(!$(this).attr('href')){return false;}
    
    $('#nav-other-links a[href!=""').each(function() {
        //
    });
    

    另外,Tomasz关于虚构的
    NAV
    选择器的说法是正确的。

    我在发布的html中看不到任何id为的控件,你也可以发布吗?标记中实际上有一个NAV元素;我已经把它添加到我原来的帖子里了。但是,我仍然得到空错误。我还更改了if语句,以便在其href不为空时提醒我。它按预期返回了4个警报。我猜问题出在if语句之后。
    $('#nav-other-links a[href!=""').each(function() {
        //
    });