#javascript #jquery
#javascript #jquery ( jquery )
Вопрос:
Привет, по какой-то причине моя функция live() не работает. я хочу добавить элемент mew li с функцией click, нажав на элемент li внутри ulAllApps. новый элемент li, созданный внутри ulMyApps, но без функции click.
HTML:
<div class="MyApps" >
<ul class="ulMyApps">
<li class="MYLinkTR">app1</li>
</ul>
</div>
<div class="AllApps">
<ul class="ulAllApps">
<li class="IECLinkTR">app1</li>
<li class="IECLinkTR">app2</li>
</ul>
</div>
Код jQuery:
$(document).ready(function () {
$(".IECLinkTR").click(function () {
var tmp = $(this).html();
$.ajax({
type: "POST",
url: window.location.href "/addToMyLinks",
data: "{'app': '" tmp "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
$(".ulMyApps").append("<li class="MYLinkTR">" tmp "</li>");
},
error: function (msg) {
alert("You have already have that app");
}
});
});
$(".MYLinkTR").live('click', function () {
var tmp = $(this);
$.ajax({
type: "POST",
url: window.location.href "/removeFromMyLinks",
data: "{'app': '" $(this).html() "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
tmp.closest('li').remove();
},
error: function (msg) {
}
});
});
});
по какой-то причине новый элемент li, созданный динамически, не имеет функции щелчка, исходящей из функции Live……
Комментарии:
1. вы получаете какую-либо ошибку, пожалуйста, проверьте консоль ошибок
Ответ №1:
Все, что я вижу, это то, что в вашей функции MYLinkTR click вы пытаетесь удалить tmp.closest(‘li’) . Теперь, просматривая документы, я думаю, что ближе всего двигаться вверх по DOM в поисках ближайшего next (‘li’), а не того, на котором он находится. Вы уверены, что не хотите tmp.remove() ?
Возможно, сначала нужно посмотреть, выдается ли предупреждение при нажатии, чтобы увидеть, срабатывает ли оно, поскольку вы ничего не делаете при ошибке. Здесь может происходить что-то, о чем вы не знаете. Другие варианты — изменить LIVE на делегирование и присоединить это к ul и посмотреть, сработает ли это
$('ul.MyApps').delegate('li', 'click', function(e){
alert('does this at least fire');
});
Комментарии:
1. Я согласен, это должно быть tmp.remove() .