добавить событие к элементу после того, как он удалит себя и снова добавит себя

Я попытался удалить кнопку и alert(), когда я нажимаю на нее, тогда функция добавит «ту же» кнопку в контейнер div, после поиска старшего старшего я попытался использовать on()/live()/delegate() / к сожалению они не работают.

<body>
    <div id="container"></div>
    <hr>
    <button onclick="clicked()">Other one</button>
    <hr>
</body>
<script>
$(document).ready(function(){
    var i = 0;
    $("#container").append("<button id='btn_sub' onclick='clicked()'>Click Me!</button>");
    $("[id='btn_sub']").delegate(this,"click",function(){
        $("#container").empty();
        $("#container").append("<button id='btn_sub' onclick='clicked()'>Click Me!"+i+"</button>");
        i++;
    });//tried click/on click/live
});
function clicked(){
    alert(1);
}
</script>

Наконец, в этом примере функция, по которой щелкнули, была помещена из $(document).ready(), и часть предупреждения сработала.

Есть ли другой способ сделать тот же эффект? и почему on()/live()/delegate()/ не работает?

Спасибо.


person K2R    schedule 19.12.2018    source источник
comment
какая у вас версия jquery?   -  person kamalpreet    schedule 19.12.2018
comment
jquery-3.3.1.js   -  person K2R    schedule 19.12.2018
comment
Почему вам нужно удалить кнопку и добавить ее снова? Просто изменить нельзя?   -  person Shidersz    schedule 19.12.2018
comment
.delegate уже устарел   -  person Darryl Ceguerra    schedule 19.12.2018
comment
это работает в первый раз... добавлен новый элемент кнопки. но поскольку старая кнопка, на которую был добавлен обработчик событий, удалена и не повторно подписана на новый элемент кнопки, счетчик не увеличивается после 0. Однако onclick=clicked() работает.   -  person gp.    schedule 19.12.2018
comment
Я пытаюсь сделать функцию подстраницы, Lol изменить это - хорошая идея. Спасибо   -  person K2R    schedule 19.12.2018
comment
да, устарело.   -  person K2R    schedule 19.12.2018
comment
как я могу повторно подписаться на новую кнопку в jquery? Я пытался связать, но не удалось, и это похоже на цикл.   -  person K2R    schedule 19.12.2018


Ответы (2)



Используйте функцию on для присоединения события.http://api.jquery.com/on/

$(document).ready(function () {
	var i = 0;
	$("#container").append("<button id='btn_sub' onclick='clicked()'>Click Me!</button>");
	$("#container").on("click", "[id='btn_sub']", function(){
		$("#container").empty();
		$("#container").append("<button id='btn_sub' onclick='clicked()'>Click Me!" + i + "</button>");
		i++;
	});
});
function clicked() {
	alert(1);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
    <div id="container"></div>
    <hr>
    <button onclick="clicked()">Other one</button>
    <hr>
</body>

person yip102011    schedule 19.12.2018