2016-04-25 19 views
-1

:私は何をしようとしているイベントリスナー

function funcName(aList) { 
    // populates the options for the select tag 
    $("#cat").on("change", function(){ 
     // some computation; 
    }); 
    // uses aList to update some div data 
} 

:表示されなければならないオプション扱いjavascript関数で

<select id='cat'> 
    <option value='a'>A</option> 
    <option value='b'>B</option> 
    <option value='all'>all</option> 
</select> 

選択されたオプションがallの場合は、すべてをaListに表示する必要があります。そうでない場合は、選択したオプションに基づいて、関連するオプションのみを表示する必要があります。 onchangeの私の使用は正しいですか?

当初私はaListをグローバルに考えていましたが、JSのグローバルでの読書の後、私はそれが非常に良い習慣ではないことを知る必要がありました。

ありがとうございます!

更新:aListにはいくつかの文字列値が含まれています。関数は匿名関数提供

+2

..あなたがどこかにそれを呼び出したことがありますか?これは何らかのイベントのハンドラ関数ですか? – Rayon

+4

はイベントハンドラをコンポーネントに一度バインドするのに十分です。毎回それをする必要はありません。ハンドラに対して定義されたコールバックは、コンポーネントでイベントが発生するたびに呼び出されます。 – MohamedSanaulla

+0

ハンドラを '$(" cat#).off()に変更することができます。 "(change、function(){ //何らかの計算; });'これは何度も呼び出すことができますあなたのオブジェクトにバインドされているイベントハンドラは1つだけです。 –

答えて

0

$(function() { 
 
     $("#ddl").change(function() { 
 
      var selectedText = $(this).find("option:selected").text(); 
 
      var selectedValue = $(this).val(); 
 
      var assignedRoleId = new Array(); 
 
      alert("Selected Text: " + selectedText + " Value: " + selectedValue); 
 
      if(selectedValue== "all") 
 
      { 
 
       $("#ddl option").each(function() 
 
        { 
 
       if(this.value=="all") 
 
        { 
 
        assignedRoleId.push(); 
 
        } 
 
       else 
 
        { 
 
        assignedRoleId.push(this.value); 
 
        assignedRoleId.push(" "); 
 
        $("#selected").html(assignedRoleId); 
 
        } 
 
       }); 
 
      } 
 
     }); 
 
    });
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
 
Select something: 
 
<select id="ddl"> 
 
    <option value="">select one</option> 
 
    <option value="a">a</option> 
 
    <option value="b">b</option> 
 
    <option value="all">all</option> 
 
</select> 
 
<div id="selected"> 
 
    </div>

関連する問題