Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery在<;时未被解雇;李>;是以编程方式构造的_Javascript_Jquery_Html - Fatal编程技术网

Javascript JQuery在<;时未被解雇;李>;是以编程方式构造的

Javascript JQuery在<;时未被解雇;李>;是以编程方式构造的,javascript,jquery,html,Javascript,Jquery,Html,请看一下我的JavaScript <script> function dynamicMessageLoader(id) { $.get("SentMessagesDynamicLoaderServlet?idMessageGroup=" + id, function (responseJson) { $('#li_list').empty();

请看一下我的JavaScript

<script>
            function dynamicMessageLoader(id) {

                $.get("SentMessagesDynamicLoaderServlet?idMessageGroup=" + id, function (responseJson) {

                    $('#li_list').empty();
                    var array = [];

                    $.each(responseJson, function (index, item)

                    {
                        array[index] = item;
                    });

                    $('#message_count').empty();

                    var readArray = array.length;
                    var count = readArray + " Messages Selected";
                    $('<p />', {html: count}).appendTo('#message_count');

                    for (var i = 0; i < readArray; i++) {

                        //$('<li />', {html: array[i][1]}).appendTo('#li_list');
                        $('<li>', { 'class': 'clickable-row hand', id: array[i][0], html: array[i][1]}).appendTo('#li_list');

                    }
                });
            }
        </script>
现在的问题是,上面的Jquery代码只会被硬编码的
  • 调用。我通过JavaScript添加的
  • 元素从未调用它

    如何修复此问题?

    对于新创建的元素,只需使用。因此,在这里,您将向父级(
    本例中为文档
    )附加一个事件,该事件将为其所有子级(函数上的
    .on
    中的第二个参数)触发,该子级将是本例中的
    可单击行

    它不适用于
    $('.clickable row')。单击
    ,因为在事件分配时,最后一个节点仅附加到现有的dom节点(因此新创建的节点不会附加到此单击节点)

    见以下代码:

    $(document).on("click", '.clickable-row', function() {
    
    
      var $this = $(this),
        id = this.id;
    
      //alert(id);
    
      $.get("MessagesDynamicPopupServlet?idMessage=" + id, function(responseJson) {
    
        var array = [];
    
        $.each(responseJson, function(index, item)
    
          {
            array[index] = item;
          });
        var image = array[3];
    
        $('#idMessage').val(array[0]);
        $('#idMessageGroup').val(array[1]);
        $('#message').val(array[2]);
    
        $('#blah').attr("src", image);
    
        $('#videoURL').val(array[4]);
      });
    });
    

    如果你不介意的话,你能解释一下为什么这样做吗?好的,我现在就做哇,太好了。是的,请解释为什么这样做。@PeakGen在回答中添加:)当您调用
    $('.clickable row')
    时,它将搜索所有此类元素并附加事件(如“click”)。它将仅对现有对象执行此操作。当您使用
    $(document).on(“单击“,”.clickable row',function(){})
    它将在
    文档
    (始终存在)上附加事件,当您单击
    时。可单击行
    此单击事件将冒泡到文档中,脚本将检查单击了哪个元素并执行附加事件。您必须在手动添加“li”后注册单击功能。
    <script>
    
                jQuery(function () {
                    $('.clickable-row').click(function () {
    
    
                        var $this = $(this),
                                id = this.id;
    
                        //alert(id);
    
                        $.get("MessagesDynamicPopupServlet?idMessage=" + id, function (responseJson) {
    
                            var array = [];
    
                            $.each(responseJson, function (index, item)
    
                            {
                                array[index] = item;
                            });
                            var image = array[3];
    
                            $('#idMessage').val(array[0]);
                            $('#idMessageGroup').val(array[1]);
                            $('#message').val(array[2]);
    
                            $('#blah').attr("src", image);
    
                            $('#videoURL').val(array[4]);
                        });
                    });
                });
    
            </script>   
    
    $(document).on("click", '.clickable-row', function() {
    
    
      var $this = $(this),
        id = this.id;
    
      //alert(id);
    
      $.get("MessagesDynamicPopupServlet?idMessage=" + id, function(responseJson) {
    
        var array = [];
    
        $.each(responseJson, function(index, item)
    
          {
            array[index] = item;
          });
        var image = array[3];
    
        $('#idMessage').val(array[0]);
        $('#idMessageGroup').val(array[1]);
        $('#message').val(array[2]);
    
        $('#blah').attr("src", image);
    
        $('#videoURL').val(array[4]);
      });
    });