脚本不会对最近创建的元素生效

时间:2013-02-20 13:42:53

标签: javascript jquery html ajax

我创建了两个用于管理列表的脚本。一个用于在页面中添加 li 元素并将其保存到数据库,另一个用于删除它。事实是,当我创建 li 元素时,第二个脚本(删除一个)不会对它生效(我必须更新页面才能将其删除)。我怎样才能使它发挥作用?

我留下两个脚本:

添加:

function afegir() {

    var fnom=document.getElementById('compranom').value;
    var fnum=document.getElementById('quantitat').value;
        $.ajax({
            data: {
                "nom": fnom,
                "num":fnum
            },
            url:   'afegir.php',
            type:  'post',
            beforeSend: function () {
            },
            success:  function (response) {
            if(response!="-1") {
                $('.llista').append('<li value="'+fnum+'" id="'+response+'" >'+fnom+'</li>');
            }
            else{
            alert('Error');
            }
            }
        }); 
    }

卸下:

$(document).ready(function(){
$(".list li").click(function() {
var fid=$(this).attr('id');
    $.ajax({
        data: {
            "id": fid
        },
        url:   'treure.php',
        type:  'post',
        beforeSend: function () {
        },
        success:  function (response) {
        if(response=="si") {
            $("#"+fid+"").remove();
        }
        else{
        alert('Error');
        }
        }
    }); 
});

});

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

用于事件委托......

$(document).ready(function(){
 $(".list").on('click','li',function() {
    var fid=$(this).attr('id');
    $.ajax({
      data: {
        "id": fid
      },
      url:   'treure.php',
      type:  'post',
      beforeSend: function () {
      },
      success:  function (response) {
        if(response=="si") {
          $("#"+fid+"").remove();
        }
        else{
           alert('Error');
        }
       }
   }); 

 });
});

link here详细了解委派活动

答案 1 :(得分:0)

可以使用live()来获取新创建的元素:http://api.jquery.com/live/

描述:为现在与当前选择器匹配的所有元素附加事件处理程序,将来