将事件处理程序附加到通过PHP加载的下拉选项html

时间:2013-08-30 02:54:36

标签: php javascript jquery ajax

我一直在阅读他,我意识到我需要一个委托的事件处理程序。

编辑:我想要做的是:当一个人选择一个新值时,我希望一个事件被触发,填写相邻下拉框的选项列表。此时,如果发出警报,我会知道它有效。但是,这种情况并没有发生。我想要的是在选择新选项时触发事件

我的事件处理程序:

$(document).ready(function(){
 $('#DDgrade').on("change", ".oDDclass", function() {
 var originatingid = jQuery(this).attr("id");
 var grade =    $("#DDgrade :selected").text();
alert('grade= '+grade);
return;
  }); 
});

创建下拉列表的代码:

<select name="DDgrade" id="DDgrade" onChange="$('#theotherdropdowns').css({'visibility': 'hidden'});" style="width:130px;height:30px;margin-bottom:5px;">
<option value="Grade">Grade</option>

<?php
    $mysqli1 = connecttomydatabase();
    $query2="
    SELECT grade 
    FROM a10daydefaults 
    ;";

    $stmt = $mysqli1->prepare($query2) ; echo $stmt->error ;
    //var_dump($mysqli1->error);
    if ( $stmt->execute() ) {;} else{ printf("Query error: %s", $stmt->error); } 
    $stmt->store_result();
    $stmt->bind_result($theresult);

    while($stmt->fetch()) {
        echo $theresult ."<br>";
        echo "<option value='$theresult' class='oDDclass'>$theresult</option>";
    }           
    $stmt->free;
    $stmt->close;
?>          
</select>

我已经读过这个,我认为我正确地做了但它不起作用。

1 个答案:

答案 0 :(得分:0)

option元素的select元素没有更改事件:

https://developer.mozilla.org/en-US/docs/Web/Reference/Events/change

更新如果select元素未动态添加到页面中,则无需事件委派,您可以执行以下操作

$('#DDgrade').change(function(){
     var grade =    $("#DDgrade :selected").text();
     alert('grade= '+grade);
});

通过动态添加选项元素选项来查看它的实际效果:http://jsfiddle.net/nNK9y/

如果您动态地将选择元素添加到页面中,那么您需要委派。