0

ページにいくつかの HTML 要素を動的に追加しています。複数のアイテムが追加される可能性があり、異なる回数追加される可能性があるため、「バインド」を使用するのは困難です。

インライン関数を使用することにしましたが、これは Firefox では機能しません...他のすべてのブラウザーでは機能します。オプションの onClick に注目してください。また、onblur、onchange、on select も試しました。これらはいずれも Firefox では機能しません。

私の目標は、オプションが選択されたときにこれらの関数を実行することです。私は何かが欠けていると思います。

$("#billTasks").find('tr')
  .append('<td><fieldset><select>
           <option class="fixedRate" onClick="fixedOption(this)" id="billFixedSelect" value="1">Fixed Rate</option>
           <option class="hourly"  onClick="hourlyOption(this)" id="billHourlySelect" value="2"></option>
           </select>
           <input type="text" placeholder="Rate" class="fieldWidth100 rate currency" style="margin-right:10px;"/>
           <select class="schedule">
           <?php while($row = $db->sql_fetchrow($result)){
                echo "<option value=\'{$row['schedule']}\'>{$row['schedule']}</option>\\n";}?>
           </select></fieldset></td>');

これは問題のコードです(追加文字列内)

<select>
    <option class="fixedRate" onClick="fixedOption(this)" id="billFixedSelect" value="1">Fixed Rate</option>
    <option class="hourly"  onClick="hourlyOption(this)" id="billHourlySelect" value="2"></option></select>
4

3 に答える 3

2

インラインにする理由 このようなことを試します。

$("#billTasks").find('select').live("change", function() {
  var SelectedValue = $(this).val();
  if (SelectedValue == '1') {
  //your task                      
  }
  if (SelectedValue == '2') {
  //Your Task                     
  }

 });
于 2012-05-26T16:39:13.827 に答える
1

そのためにデリゲートイベントハンドラーを使用できます。

$('#billTasks ').on('change', 'select', function() {
  // your code
  hourlyOption(this); // here this points to select itself
});

ここを読む

于 2012-05-26T16:25:50.793 に答える
0

これにはクラスを使用することをお勧めします。あなたができることは次のようなものです:

function Option(html, events) {
    var o = $(html);
    for(var k in events) {
        o.bind(k, events[k]);
    }
    return o;
}

これを次のように使用します。

var o = new Option('<option>blah</option>', { click: function() { } ... });

o単なる新しい jquery オブジェクトです。だからいくらでも使えます。

于 2012-05-26T16:47:51.703 に答える