JS / JQuery. Как создать рабочую кнопку?

0

(Я не уверен, как назвать этот пост).

Рассмотрим следующий код. У меня есть кнопка для удаления текста и вставки новой кнопки. Новая кнопка вставляется в порядке, но ничего не происходит при нажатии (появляется простой popoup). Firebug не помогает. Я подозреваю, что НЕ знаю, как использовать $ (document).ready.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>tre.html</title>
<script type="text/javascript"  src="..../jquery-1.8.3.js"></script>
<script type="text/javascript">
function resetButton() {
    $('ul.eventlist button.reset')
        .unbind('click')
        .bind('click', function(event) {
        event.preventDefault();
alert($(this).parent().html());
alert('mario');
});
}
function removeButton() {
    $('ul.eventlist button.remove')
        .unbind('click')
        .bind('click', function(e) {
        e.preventDefault();
var reset = $('<li><button class="reset" ><span>Reset</span></button> New text</li>'); 
$(this).parent().parent().append(reset);
$(this).parent().remove();
});
}
</script>
<script type="text/javascript">
$(document).ready(function() {
   removeButton();
   resetButton();
      });
</script>
</head>
<body>
<ul class="eventlist">
<li><button class="remove"><span>Delete</span></button> Some Text
</li>
</ul>
</body>
</html>
Теги:

2 ответа

3
Лучший ответ

Внутри функции готовности документа, когда вы вызываете resetButton() кнопка сброса не существует. Вы должны вызвать эту функцию внутри removeButton(), после того, как была создана кнопка сброса.

Например:

function removeButton() {
    $('ul.eventlist button.remove')
        .unbind('click')
        .bind('click', function(e) {
        e.preventDefault();
        var reset = $('<li><button class="reset" ><span>Reset</span></button> New text</li>'); 
        $(this).parent().parent().append(reset);
        $(this).parent().remove();
        resetButton();
    });
}

Вот скрипка с кодом: http://jsfiddle.net/7AAws/2/

  • 1
    делегирование событий будет намного безопаснее .... если OP использует повторяющиеся строки из них, будет добавлять все больше и больше обработчиков кликов к каждой кнопке
  • 0
    Спасибо. Просто и понятно!
0

Hey ur обязательная функция при загрузке страницы.... Но в это время кнопка сброса не существует.

Поэтому вызовите resetButton() внутри removeButton()

Ещё вопросы

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