我正在尝试写一些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来做重定向,但是我希望它计算所有实例然后确定重定向
答案 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 1 强>