我有以下几行代码:
$(function(){
$("div").scroll(function() {
function hpos(id) {
var pos = $("#" + id).position();
return pos.top;
}
function final(id) {
$("#header").html($("#" + id).html()),
$("h1").css("visibility","visible"),
$("#" + id).css("visibility","hidden");
}
if (hpos(5) < 0) {
final(5);
}
else if (hpos(4) < 0) {
final(4);
}
else if (hpos(3) < 0) {
final(3);
}
else if (hpos(2) < 0) {
final(2);
}
else {
final(1);
}
});
});
我不能通过使用循环而不是else if语句来缩短它吗?我无法找到一种方法来使循环适用于我的位置()。
答案 0 :(得分:5)
for (var i = 5; i > 0; i--){
if (hpos(i) < 0) {
final(i);
break;
}
}
会是这样的吗?没有按照方式进行测试
答案 1 :(得分:0)
使用case
方法执行大量其他if语句的更简单方法。
答案 2 :(得分:0)
这应该更短:
$.each([5,4,3,2], function(i,v) {
if( hpos(v) < 0 ) {
final(v);
return false;
} else if( v === 2 ) {
final(1);
}
});
答案 3 :(得分:0)
如果您需要一段时间版本: :)
var elemId = 5;
while (elemId > 1) {
if (hpos(elemId) < 0) {
break;
}
elemId--;
}
final(elemId);