2015-12-04 2 views
-1

Я пытаюсь установить атрибуты событий в группе раскрывающегося списка, генерируемого динамически, но по какой-то причине события не работают. Heres мой код.Как генерировать динамические события в jquery?

$(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

Не должен ли атрибут быть заменен? –

+0

Можете ли вы попробовать с '' onchange ''insted of' "change" ' –

+1

Разве вы не используете ненавязчивый' on() 'вместо атрибута? И что это за метод 'value()', который вы вызываете? –

ответ

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?

+0

Большое вам спасибо, ваше решение отлично работает. –

0

HTML:

<select class="dynamicSelects"> 
.... 
</select> 

JS:

var generatePrice = function() { 
    alert(this.value); 
}; 

$(document).ready(function() { 
    $('body').on('change', '.dynamicSelects', generatePrice); 
}); 

Это пример использования on методов, предоставляемых JQuery и делегирование событий. Это означает, что даже если эти выпадающие файлы не находятся в DOM, но вы все равно можете присоединить к нему событие, и всякий раз, когда они существуют в DOM, событие срабатывает. В основном это говорит о прикреплении этих событий к телу, но срабатывание элементов с классом dynamicSelects. Это включает в себя добавление любых других динамически сгенерированных выпадающих списков с этим классом позже.

Установка атрибутов для прикрепления событий, в то время как это может сработать, должно быть действительно выполнено с использованием метода или в простом JS addEventListener, на мой взгляд.

Также при работе на простых элементах DOM свойство value не является функцией, поэтому не требуется value(). Только this.value. И вам не нужно преобразовывать его в строку, потому что значение возвращает строку. Если бы это был объект jquery, вы можете сделать $(this).val(), который является функцией.

Я предлагаю это изменение конечно, потому что, если вы собираетесь использовать библиотеку, например, jQuery, по крайней мере, воспользоваться теми предложениями, которые она предлагает.

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()); 
} 
Смежные вопросы