2012-09-13 29 views
0

我怎樣才能確定在選擇框中更改值而無需單擊選擇框本身。Jquery確定選擇框的值是否有變化

我的代碼如下:

JQUERY

  $("select").each(function() { 
       $(this).change(function() { 
        if ($(this).val() === "-Select-"){ 
         this.parent().addClass("highlightSelect"); 
         this.parent().sibling().show(); 
        } else{ 
         this.parent().removeClass("highlightSelect"); 
         this.parent().sibling().hide(); 
        } 
       }); 
      }); 

HTML

<div id="wwctrl_add_savedAddressId" class="wwctrl styled-select"> 
<select id="add_savedAddressId" class="storedPaymentInput_size4 required savedAddress checkDropdown valid" onchange="changeSavedAddressType();generateSavedAddressAdd();" name="summaryData.usedAddress"> 
<option value="-Select-">-Select-</option> 
<option value="O">Enter New Address</option> 
<option value="3041">Home - 116 Parrot...</option> 
<option value="22268">Other - rwara, aw...</option> 
<option value="21372">Other - 1040..</option> 
</select> 
</div> 
<div class="error" for="add_savedAddressId" generated="true" style="display: none;"> Select item</div> 

注:我有這影響了上述選擇框的值的變化,其他按鈕

+0

請提供jsfiddle – Asciiom

回答

1

首先 - 有問題的代碼不起作用。 它必須是這樣的:

   $("select").change(function() { 
        if ($(this).val() === "-Select-"){ 
         $(this).parent().addClass("highlightSelect"); 
         $(this).parent().siblings().show(); 
        } else{ 
         $(this).parent().removeClass("highlightSelect"); 
         $(this).parent().siblings().hide(); 
        } 
       }); 

父是jQuery對象功能,而不是DOM對象的功能和this是可以變成JQ對象這樣的DOM對象:$(this)。另外,這些不是在jquery中的sibling方法,但有siblings。或者,如果你想採取一個/上一個兄弟,你可以使用.next()/.prev(),而不是siblings它會返回一個元素

我刪除每個兄弟姐妹都,但實際上這並不是必需的。您可以使用它,但幾乎任何jQuery方法都會使用一組方法執行操作,因此$("select")可能會在頁面中找到幾個選擇,並且$("select").change(...)會將更改的處理程序綁定到$("select")找到的所有選擇。

並回答你的問題:據我所知,你想在選定的值改變爲porgramfully後調用改變處理程序。你可以這樣做:$("select").change(),但這種方式你可以在所有選擇中調用change事件,所以你可以這樣做:$("#add_savedAddressId").change()。在第二種情況下,您將調用更改甚至處理程序僅用於選擇編號add_savedAddressId