【问题标题】:Script doesn't take effect on element recently created [duplicate]脚本对最近创建的元素不起作用[重复]
【发布时间】:2013-02-05 13:00:16
【问题描述】:

我创建了两个用于管理列表的脚本。一个用于在页面中添加 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');
        }
        }
    }); 
});

});

感谢您的帮助。

【问题讨论】:

    标签: javascript jquery html ajax


    【解决方案1】:

    为此使用事件委托..

    $(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 阅读有关委托事件的更多信息

    【讨论】:

    • 没有 $(document).ready(function(){ ?
    • $(document).ready(function(){
    • 现在显示这个错误(PHP):&lt;br &gt;&lt;/li&gt; &lt;b&gt;Warning&lt;/b&gt;: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in &lt;b&gt;/home/s120321b/public_html/afegir.php&lt;/b&gt; on line &lt;b&gt;9&lt;/b&gt;&lt;br /&gt;
    • 这是您在 afegir.php 中的 PHP 错误...检查您所做的查询是否正确...
    • @albert:那是在 PHP 端,与 js 无关,除非您发送的参数不正确。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-04
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 2017-05-22
      • 2011-02-10
      • 1970-01-01
      相关资源
      最近更新 更多