2010-09-22 46 views
1

我想写一点jquery:如果只有一个具有“选项”类的div的实例采取href属性并重定向到该href,这是我所到之处jquery计数功能。如果语句

<script type="text/javascript"> 

var count =('Size: ' + $('.option').size()); 

if (count = 1) { 

    $('.readmore a').each(function() { 
     var url = $(this).attr('href'); 
     window.location.replace(url); 
    })    

} 
else { 

    alert("more than 1");  
} 
</script> 

它成功地重定向到正确的URL,但它不正常工作,因为它如果是div.option那么它仍然重定向和犯规警告超过1个实例“多于1”谁能帮助?

IM在脚本计数的一点猜测= 1和jQuery的众生做它的重定向,但我希望它指望所有的情况下,再确定重定向或不

回答

1

要设置计数到'Size: ' + $('.option').size(),这使它成为一个字符串。然后你将它与一个int进行比较。 另外,if (count = 1)应该是if (count == 1)。注意两个等号。

+0

变种数= $( “选项”),大小(); \t如果(计数== 1){ \t \t $( 'readmore一个。 ')每个(函数(){ \t \t变种URL = $(本).attr(' href' 属性); \t \t窗口。位置。替换(URL); \t})\t \t \t \t } else { alert(“more”); \t } 好看吗? – AJFMEDIA 2010-09-22 21:13:15

1

如果你比较数字,最好使用===“strict comparison operator

if ($('.option').length === 1){ 
     window.location.replace($('.readmore a').attr('href')); 
} 
else{ 
    alert("more than 1"); 
} 
+0

带有'window.locaation.replace'的'each'的含义是什么....页面会在第一个页面后更改。 – 2010-09-22 21:50:21

+0

呵呵好点我没有重构那部分。将修复它:) – 2010-09-22 21:53:20

1

if (count = 1)始终是真实的,因为它集数等于1!if (count == 1)只有在count等于1时才为真。两者不必是同一类型。 if (count === 1)只有在两者相同且类型相同时才为真。

计数应该有多少,而不是包含"Size: ..."的字符串。

,因为它的速度稍快,您应该使用length属性代替.count()(这是according to jQuery)。

你可以把整个东西包装成一个自我调用的匿名函数,这样你就不会污染全局命名空间......除非你稍后使用这些变量(显然只有在你不使用' t重定向页面)。

我假定HTML之前<script>标签....如果不是,你需要一个文档就绪:`$(function(){...});

<!-- HTML up here ... --> 
<script type="text/javascript"> 
(function() { 
var count =($('.option').length); 

// "count = 1" SETS COUNT EQUAL TO 1!!!!! 
if (count === 1) { 

     // Why use each? We are redirecting to the first href. 
    $('.readmore a').each(function() { 
     var url = $(this).attr('href'); 
     window.location.replace(url); 
    })    

} 
else { 

    alert("more than 1... specifically " + count);  
} 
})(); 
</script> 

最后,没有理由使用.each(),因为你将在第一.readmore a后重定向....也许你应该检查多少.readmore a那儿是谁?无论如何,这使得我更有意义。

<!-- HTML up here ... --> 
<script type="text/javascript"> 
(function() { 
var count =($('.option').length); 

// "count = 1" SETS COUNT EQUAL TO 1!!!!! 
if (count === 1) { 

    var url = $('.readmore a').first().attr('href'); 
    window.location.replace(url); 

} 
else { 

    alert("more than 1... specifically " + count);  
} 
})(); 
</script> 

jsFiddle example w 2

jsFiddle example w 1

+0

我已经这样做了,它没有工作,但它是因为我没有包含$(document).ready。现在工作正常,谢谢 – AJFMEDIA 2010-09-22 21:40:10

+0

如果你的'

  • 11. 清洁jQuery如果语句
  • 12. jQuery如果语句问题
  • 13. 如果语句为jquery
  • 14. Jquery addRemove类 - 如果语句
  • 15. 如果语句错误的语法jQuery
  • 16. 计数在哪里,如果,如果,在一个选择语句
  • 17. 击:如果语句总是成功
  • 18. 如果else语句在AJAX成功
  • 19. OOP功能和if语句
  • 20. 功能从select语句
  • 21. 功能与if/else语句
  • 22. if语句内部功能
  • 23. 从SQL语句的功能
  • 24. 功能switch语句在Javascript
  • 25. 预处理语句功能
  • 26. IF else语句功能
  • 27. 如果语句运行功能在Fancybox'onStart'document.ready之前
  • 28. 添加验证/如果其他语句公共类功能PHP
  • 29. while循环使用嵌套如果功能/语句
  • 30. 如果PHP内部的语句卷曲写功能