如何将函数运行到动态添加的选择

时间:2012-05-26 16:23:23

标签: javascript jquery

我正在动态地向页面添加一些HTML元素。可以添加多个项目,可以添加不同的时间......因此很难使用“绑定”。

我决定使用内联函数---但这不适用于Firefox ...适用于所有其他浏览器。注意onClick的选项。另外,我尝试过onblur,onchange和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>

3 个答案:

答案 0 :(得分:2)

为什么内联你尝试这样的事情。

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

 });

答案 1 :(得分:1)

您可以使用委托事件处理程序:

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

阅读here

答案 2 :(得分: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对象。所以无论如何你都可以使用它。