Javascript / JQuery, как ссылаться на созданный элемент

0

В JQuery, я использую кнопки для создания элементов, а затем ссылающиеся на кнопку щелкнула с помощью this. Например:

$(".addphoto").click(function(){
    photo_count++;
    $(this).parent().before("<label>Add Photo: <input type='file' name='photo[" + photo_count + "]'></label>");
    });    

Я хотел сделать то же самое с кнопкой, созданной скриптом, но поскольку jQuery может использовать только те .on() которые существовали при загрузке, я нацелил document и использовал .on() вместо:

$(document).on("click", ".addphoto", function(){
    photo_count++;
    $(this).parent().before("<label>Add Photo: <input type='file' name='photo[" + photo_count + "]'></label>");
    });  

Проблема в том, что теперь this относится к document а не к кнопке, которая была просто нажата. Как я могу ссылаться на эту кнопку?

Показать ещё 3 комментария
Теги:

3 ответа

0

Попробуйте использовать .live() вместо метода .click().

Ссылка Ссылка для живого метода.

Изменение: добавлю краткое описание.

.live() привязывает обработчик событий для всех элементов, которые соответствуют текущему селектору, сейчас и в будущем.

0

Вместо $(this) передайте свое событие и ссылку $(e.currentTarget).

$(document).on("click", ".addphoto", function(e){
    photo_count++;
    $(e.currentTarget).parent().before("<label>Add Photo: <input type='file' name='photo[" + photo_count + "]'></label>");
});  
0

Если вы укажете исходную кнопку ID, вы можете ссылаться на нее с помощью функции.click().

HTML

<div class="x">
    <div>
        <button class="addphoto" id="addPhotoButton">addphoto</button>
    </div>
</div>

Javascript (JQuery)

var photo_count = 0;
$('#addPhotoButton').click(function () {
    photo_count++;
    $(this).parent().before("<div><label>Add Photo: <input type='file' name='photo[" + photo_count + "]' id='addPhotoID_"+photo_count+"'></label></div>");
});

URL JSfiddle: http://jsfiddle.net/PLk2G/5/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню