jquery计数功能。如果声明

时间:2010-09-22 20:58:00

标签: javascript jquery function count

我正在尝试写一些jquery:如果只有一个div的实例有一个“选项”类采取href属性并重定向到那个href,这就是我必须要做的事情

<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”吗?

我猜测脚本的一个点是count = 1和jquery beings来做重定向,但是我希望它计算所有实例然后确定重定向

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

if (count = 1)始终为true,因为它将count设置为1!if (count == 1)仅在count等于1时才为真。两者不必属于同一类型。 if (count === 1)只有在两者相同且类型相同的情况下才会成立。

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

您应该使用length属性而不是.count(),因为它稍快一点(这是 according to jQuery )。

你可以将整个事物包装成一个自调用匿名函数,这样你就不会污染全局命名空间....除非你以后再使用这些变量(显然只有在你不这样做的情况下)重定向页面。)

我假设HTML在<script>标签之前....如果没有,你需要一个doc准备好:`$(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