0

私は他にjQueryで動作するかどうかを知っているので、このコードの問題はどこにありますか?

if (document.location.href.indexOf('#1')) {
    $(".products li").fadeIn();
}
else if (document.location.href === '#2') {
    $(".products li").fadeOut();
    $(".products li.2").stop(true,true).fadeIn(200);
}
else if (document.location.href === '#3') {
    $(".products li").fadeOut();
    $(".products li.3").stop(true,true).fadeIn(200);
}
else if (document.location.href === '#4') {
    $(".products li").fadeOut();
    $(".products li.4").stop(true,true).fadeIn(200);
}
else if (document.location.href === '#5') {
    $(".products li").fadeOut();
    $(".products li.5").stop(true,true).fadeIn(200);
}
else if (document.location.href === '#6') {
    $(".products li").fadeOut();
    $(".products li.6").stop(true,true).fadeIn(200);
}
else {
    $(".products li").fadeIn();
}

私がの代わりにそれが機能する場合にのみ置くが、それは正しくない場合。

4

3 に答える 3

1

URLのハッシュ値を確認したいようですので、使ってみませんか

location.hash

location.hrefURL全体が含まれているので

于 2012-12-17T14:59:36.753 に答える
1

document.location.href.indexOf('#1') は、一致するものが見つからない場合は-1を返し、文字列の先頭で一致する場合は0を返します。誤った値をテストするため、誤った結果になることはありません(-1はブール値として評価されますtrue)。あなたは書くべきだった:

if (document.location.href.indexOf('#1')>-1) {

しかし、あなたはハッシュを比較しているように見えるので、代わりにそれらを直接実行しましょう(そして私たちがそれにいる間は適切な window.locationものを使用してください):

if (window.location.hash == '#1') {
    // ...
} else if (window.location.hash == '#2') {
    // etc.

if/elseそうは言っても、あなたの場合、ハッシュ文字列を解析するだけで、これを完全に行うことができます。

var hash = window.location.hash.substr(1); // remove leading #
if (hash) {
    $(".products li").fadeOut();
    $(".products li."+hash).stop(true,true).fadeIn(200);
} else {
    $(".products li").fadeIn();
}
于 2012-12-17T14:53:48.793 に答える
0

最初にindexOfを使用している場合:

if (document.location.href.indexOf('#1'))

しかし、他の場合は、それを使用せずに、href.location自体を比較します。

else if (document.location.href === '#2') 
于 2012-12-17T14:55:12.573 に答える