2013-10-18 38 views
1

我有一個選擇框,其中包含兩個最近很流行的選項,要求是,如果我選擇近期,則後端應調用以獲得相應的迴應,同樣也應該爲流行而發生。我經歷了很多問題,但找不到我正在尋找的確切答案。我當前的代碼看起來像這樣每次從選擇框中選擇不同的選項時,想要調用不同的Javascript方法

<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塊都會被調用。鏈接中小企業那種小提琴的是:here

回答

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; 
    } 
}); 
+0

謝謝阿倫,這個工作我想這只是一個很多事情,我會讀了jQuery明確的API下一次。非常感謝。 – kavinder

-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 

} 
+0

不是jQuery的粉絲我看到...除非有特定的原因 - 沒有必要混合原生JS和jQuery這樣... – Lix

+0

@Lix有什麼不對嗎? – Shadow

+0

是的 - jQuery用於防止使用'getElementById'和其他原生JS函數。你爲什麼選擇不在這裏使用jQuery? – Lix

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

是使用SET值,如果你想比較他們使用

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

另外,代替if()和if()使用if ... else if()這可以確保如果第一個條件滿足,第二個條件不會執行。

+1

甚至更​​好 - 一個開關盒,以便OP可以根據需要添加越來越多的選項。添加幾個項目後,if-else構造將變得難以管理。 – Lix

0

修改代碼爲

$(".recentOrPopular").change(function() { 
    if($('.recentOrPopular').val()=='popular'){ 
     this.myPopularFunction(); 
    } 
    if($('.recentOrPopular').val()=='recent'){ 
     this.myrecentFunction(); 
    } 
}); 
相關問題