我正在尝试在动态生成的一组下拉列表上设置事件属性,但由于某种原因,事件无效。 Heres是我的代码。
$(document).ready(function () {
var idRoomTypesList = $("#idRoomTypesList").attr('value').split("_");
for (var i = 0; i < idRoomTypesList.length; i++) {
$("#roomTypeID-" + idRoomTypesList[i] + "_nRentedRooms").attr("onchange", generatePrice);
}
});
var generatePrice = function () {
alert(this.value().toString());
}
答案 0 :(得分:1)
我认为这一定对你有用
$(document).ready(function () {
var idRoomTypesList = $("#idRoomTypesList").attr('value').split("_");
for (var i = 0; i < idRoomTypesList.length; i++) {
$("#roomTypeID-" + idRoomTypesList[i] + "_nRentedRooms").on("change", generatePrice);
}
});
var generatePrice = function () {
alert($(this).val());
}
看看这个: How to use the jQuery Selector in this web application?
答案 1 :(得分:0)
HTML:
<select class="dynamicSelects">
....
</select>
JS:
var generatePrice = function () {
alert(this.value);
};
$(document).ready(function () {
$('body').on('change', '.dynamicSelects', generatePrice);
});
这是使用jQuery提供的on
方法并委派事件的示例。这意味着即使这些下拉不在DOM中,您仍然可以将事件附加到它,并且只要它们存在于DOM中,事件就会触发。它基本上表示将这些事件附加到正文但触发了具有类dynamicSelects
的元素。这包括稍后在此类中添加任何其他动态生成的下拉列表。
设置属性以附加事件,虽然它可能有用,但我认为应该使用on
方法或普通JS addEventListener
来完成。
此外,当在纯DOM元素上操作时,value属性不是函数,因此不需要value()
。只需this.value
。而且您不需要将其转换为字符串,因为值返回一个字符串。如果它是一个jquery对象,那么你可以做$(this).val()
这是一个函数。
我只建议改变当然,因为如果你打算使用像jQuery这样的库,至少要利用它提供的东西。
答案 2 :(得分:0)
您是否搜索过jQuery documentation?
$(document).ready(function () {
var $idRoomTypesList = $("#idRoomTypesList").attr('value').split("_");
for (var i = 0; i < idRoomTypesList.length; i++) {
$("#roomTypeID-" + idRoomTypesList[i] + "_nRentedRooms").attr("onchange", generatePrice);
}
$( "#idRoomTypesList" ).change(generatePrice());
});
var generatePrice = function () {
alert(this.value().toString());
}