2014-11-03 5 views
0

Я пытаюсь использовать AJAX для загрузки некоторых входов & выбирает, что показывает позже на странице. Я делаю что-то вроде этого.выбрать onfocusin сделать что-то не работает

<input type='product' alt='2'/> 

$("input[type='product']").on("focusin", function(){ 
    var product_type_ids = $(this).attr('alt'); 
    $(this).autocomplete({ 
     // ajax load the information here 
    }); 
}); 

<select type='product' alt='2'/> 

$("select[type='product']").on("focusin", function(){ 
    var product_type_ids = $(this).attr('alt'); 
    // some codes here 
}); 

результат OK для выбора и входов, которые существуют с начала рендеринга страницы, но не для элементов, которые появились позже. Кто-нибудь знает, что здесь происходит? благодаря!

ответ

1

Это событие делегации. Измените свой селектор.

$("body").on("focusin", "input[type='product']", function(){ 

$("body").on("focusin", "select[type='product']", function(){ 

Это позволит событию элемента распространяться на статический родительский элемент, такой как «тело» в этом случае. Это будет работать и для всех будущих элементов.

+0

Кажется, что это хорошо работает. Но что, если я хочу, чтобы он загружался автоматически без события focusin? –

+0

@ChandlerLee Я не уверен, что вы имеете в виду ...? – Ohgodwhy

+0

Я имею в виду, если я использую событие focusin, тогда мне нужно щелкнуть выделение перед загрузкой ajax и добавить выбранные. Есть ли способ загрузить содержимое ajax с помощью делегата? –