2014-02-03 2 views
0

Demo - http://jsfiddle.net/P9rs6/On() не работает после изменения HTML

HTML

<span class="js-make-input" data-id="1" data-value="5">5</span> 

JQuery

$('.js-make-input').on('dblclick', function(){ 
    var itemID = $(this).attr('data-id'); 
    var value = $(this).attr('data-value'); 

    $(this).attr('class', 'js-edit-row'); 

    $(this).html(' <input type="text" value="' + value + '" data-id="' + itemID + '" style="width: 45px" /> '); 
}); 

$('.js-edit-row').on('dblclick', function(){ 
    $(this).attr('class', 'js-make-input'); 
    $(this).html(value); 
    var value = $(this).attr('data-value', value); 

}); 

Я могу понять, почему он не работает после второго DblClick.

+0

Вы также можете посмотреть [здесь] (https://coderwall.com/p/ks_27q) о том, как создавать объекты DOM без конкатенации строк. – jeroenvisser101

+0

http://api.jquery.com/on/ –

+1

@ jeroenvisser101 спасибо! Я попытаюсь использовать ваши советы. –

ответ

2

Вы можете использовать on() для привязки событий к динамически добавленным элементам. Как это:

$(document).on('dblclick','.js-make-input', function(){ /*Your code here*/ }); 

Это только для простого примера, то лучше, чтобы связать его на элемент ближе к кнопке, которая уже находится на странице, когда он сначала загружает, а не на document.

+4

В идеале вместо «document» вместо общего родителя. я. е. форма. – crush

+3

Этот ответ можно улучшить, указав * почему * код OP не работал. –

+0

@Milind Avantwar спасибо! –

Смежные вопросы