1

最近と人気の2つのオプションを持つ選択ボックスがあります。要件は、最近を選択すると、バックエンドへの呼び出しがそれぞれの応答を取得する必要があり、人気についても同じことが起こる必要があります。ここで多くの質問を受けましたが、探している正確な答えを見つけることができませんでした. 私の現在のコードは次のようになります

<select class="recentOrPopular" name="mostpopular">
<option value="recent">Recent</option>
<option value="popular">Popular</option>
</select>

これは 2 つのオプションを持つ単純な html で、JavaScript は次のとおりです。

if($('.recentOrPopular').val('recent')){
    this.myrecentFunction();
    }

$( ".recentOrPopular" ).change(function() {
    if($('.recentOrPopular').val('popular')){
        this.myPopularFunction();
    }
    if($('.recentOrPopular').val('recent')){
        this.myrecentFunction();
    }
});

したがって、デフォルトでは myrecentFunction が最初に呼び出されますが、オプションを変更すると、両方の if ブロックが呼び出されます。ある種のフィドルへのリンクは次のとおりです。

4

4 に答える 4

2

比較して読み取るのではなく、 .val(value)を使用して値を設定しています

$(".recentOrPopular").change(function () {
    var value = $(this).val();
    if (value == 'popular') {
        this.myPopularFunction();
    } else if (value == 'recent') {
        this.myrecentFunction();
    }
});

スイッチを使用して

$(".recentOrPopular").change(function () {
    var value = $(this).val();
    switch (value) {
        case 'popular':
            this.myPopularFunction();
            break;
        case 'recent':
            this.myrecentFunction();
            break;
    }
});
于 2013-10-18T05:47:48.383 に答える
2
$('.recentOrPopular').val('popular')

それらを比較したい場合は、値を設定するために使用されます

if($('.recentOrPopular').val() == 'popular')

また、if() を使用してから if() を使用する代わりに、if ... else if() を使用すると、最初の条件が満たされた場合、2 番目の条件が確実に実行されなくなります。

于 2013-10-18T05:48:25.260 に答える
0

コードを次のように変更します

 $( ".recentOrPopular" ).change(function() {
    if($('.recentOrPopular').val()=='popular'){
        this.myPopularFunction();
    }
    if($('.recentOrPopular').val()=='recent'){
        this.myrecentFunction();
    }
});
于 2013-10-18T05:48:30.387 に答える
-1
<select class="recentOrPopular" name="mostpopular" id="dropdownPName" >

pName = document.getElementById('dropdownPName');
var value = pName.options[pName.selectedIndex].value;
switch(value)
{
    case 'recent' : //call your function

    case 'popular' : // call your function

}
于 2013-10-18T05:47:58.900 に答える