【问题标题】:jQuery/Javascript: What's wrong with my 'If'?jQuery/Javascript:我的“如果”有什么问题?
【发布时间】:2011-04-23 04:25:02
【问题描述】:

我的代码有点大:

if(".level-0.find('.children').length == 1"){
     $(".level-0 > a").attr("href", ""); 
 };

基本上我是说“如果 Level 0 有一个 '.children' 类,不要重写它的链接中的 HREF!”

问题是它总是覆盖 HREF,就好像没有条件一样。我已将“== 1”更改为“== 10000000”或“20”或“15”,它总是会覆盖 HREF。它只是表现得好像没有条件语句。我确定这是一个语法错误,但我看不到它。

再次感谢您帮助 n00b 跌跌撞撞地迈向最低能力。这是我们希望更改的代码,仅用于上下文。

<li class="level-0 page_item page-item-264"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=264" title="Ca$h Rulez">Ca$h Rulez</a>
<ul class='children'>
    <li class="level-1 page_item page-item-266"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=266" title="1994">1994</a></li>
    <li class="level-1 page_item page-item-268"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=268" title="1995">1995</a></li>
    <li class="level-1 page_item page-item-270"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=270" title="1996">1996</a></li>
    <li class="level-1 page_item page-item-272"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=272" title="1997">1997</a></li>
    <li class="level-1 page_item page-item-274"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=274" title="1998">1998</a></li>
    <li class="level-1 page_item page-item-276"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=276" title="1999">1999</a></li>
    <li class="level-1 page_item page-item-278"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=278" title="2000">2000</a></li>
    <li class="level-1 page_item page-item-280"><a href="http://www.domain.com.php5-15.dfw1-1.websitetestlink.com/wordpress/?page_id=280" title="2001">2001</a></li>
</ul>
</li>

【问题讨论】:

  • 这被称为类型强制的魔法......
  • @Chaos - 这被称为语法错误。
  • @Peter - 恐怕不会。这直接来自规范:如果参数是空字符串(其长度为零),则结果为假;否则结果为真。
  • @Chaos - 我的错。这不是语法错误......我的意思是“打字错误”,OP在if语句中提供了一个字符串,所以就像你说的,结果总是true.....这是因为OP意味着创建改为 jQuery 对象:$(".level-0").find('.children').length == 1".level-0.find('.children').length == 1"

标签: javascript jquery conditional


【解决方案1】:

你不能像你一样在那里使用你的条件,因为如果你有超过 1 个 .level-0 ,你在 .level-0 和它的>一个
如果你的条件只匹配 1 次,则文档内的所有 .level-0>a 都会被访问。

$('>a',$(".level-0").has('.children'))

...将选择 .level-0 的所有 child-&lt;a&gt;,如果 .level-0 包含至少 1 个 .children

【讨论】:

    【解决方案2】:

    难道不应该

    if ($(".level-0").find('.children').length == 1) {
        $(".level-0 > a").attr("href", ""); 
    }
    

    ?

    也许是星期五晚些时候? :)

    【讨论】:

      猜你喜欢
      • 2013-11-25
      • 2011-12-07
      • 2014-04-12
      • 2018-11-01
      • 1970-01-01
      • 2023-03-05
      • 2013-11-20
      • 1970-01-01
      相关资源
      最近更新 更多