1

我有一个选择框,其中包含最近和流行的两个选项,要求是,如果我选择最近,那么对后端的调用应该得到相应的响应,流行也应该发生同样的情况。我在这里遇到了很多问题,但找不到我正在寻找的确切答案。我当前的代码看起来像这样

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

这是带有两个选项的简单 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 块都会被调用。SME 类型的小提琴的链接是:这里

4

4 回答 4

2
$('.recentOrPopular').val('popular')

用于设置值,如果要比较它们,请使用

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

另外,不要让 if() 然后 if() 使用 if ... else if() 这确保如果第一个条件满足,第二个不会执行。

于 2013-10-18T05:48:25.260 回答
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 回答
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 回答