Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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 append()和操作内部内容_Javascript_Jquery_Append - Fatal编程技术网

Javascript append()和操作内部内容

Javascript append()和操作内部内容,javascript,jquery,append,Javascript,Jquery,Append,就像在facebook上一样,我想制作一个边栏,上面有朋友的名字,用户可以在其中单击打开一个相应的消息块,其中包含一个消息选项卡,打开一个包含以前消息的弹出框,并形成新消息 HTML 我对.append有一个问题,并且无法处理其中的内容。这段代码在第一次尝试时运行良好。但是,当我创建一个新的消息选项卡时,以前创建的选项卡不会响应。以下是我所拥有的: JavaScript 执行此操作时: $('.message_tab').on('click', function(){ $(this).a

就像在facebook上一样,我想制作一个边栏,上面有朋友的名字,用户可以在其中单击打开一个相应的消息块,其中包含一个消息选项卡,打开一个包含以前消息的弹出框,并形成新消息

HTML

我对.append有一个问题,并且无法处理其中的内容。这段代码在第一次尝试时运行良好。但是,当我创建一个新的消息选项卡时,以前创建的选项卡不会响应。以下是我所拥有的:

JavaScript

执行此操作时:

$('.message_tab').on('click', function(){
    $(this).addClass(user_id);
    $(this).siblings('.message_flyout').toggle();
});
您不仅向刚刚创建的元素添加了一个单击处理程序,还向以前创建的所有元素添加了另一个单击处理程序。这意味着上一个选项卡现在有两个单击处理程序,它们都执行以下操作:

$(this).siblings('.message_flyout').toggle();
这将基本上相互抵消

不是每次创建元素时都添加一个新的处理程序,而是为整个页面创建一个处理程序:

$(document).on('click', '.message_tab', function(){
    $(this).addClass(user_id);
    $(this).siblings('.message_flyout').toggle();
});
当页面加载时,而不是在“.chat_list”单击处理程序中执行此操作一次。这样,所有匹配的“.message_tab”元素只有一个顶级处理程序

因此,你最终会得到更像这样的结果:

$('.chat_list').click(function(){
    var user_id = $(this).attr('value');
    var el = $('<div class = "message_block">'+
        '<div class = "message_tab">'+ '</div>' +

    '<div class = "message_flyout">' +
        '<div class = "message_content">' +
            '<div class = "message_header">'+ '</div>' +
                '<div class = "conversation_scroll">' +
                    '<div class = "scroll_content">' + '</div>' +      '</div>' +
                        '<div class = "message_form">' +
                        "<form method= 'POST' action= 'http://localhost:8000/newtch' accept-charset= 'UTF-8'>" + "<input name='_token' type='hidden' value='2rS54FJZJZhWPplLmBJSH4CsID7Pgec7iPsDtrnm'>" +
                            '<div class = "message_form">' +
                                 "<input class='input-mini' placeholder='Type a message' name='status' type='text'>" +
                            '</div>'+
                         "</form>" +
                    '</div>'+
                '</div>'+
            '</div>'+
    '</div>');

    $('.docking_tabs').append(el);
});

$(document).on('click', '.message_tab', function(){
    $(this).addClass(user_id);
    $(this).siblings('.message_flyout').toggle();
});

$(document).on('click', '.message_header', function(){
    console.log('clicked');
    $(this).closest('.message_flyout').toggle();
})

嗨,我在这里做了一些尝试:

尝试替换:

$('.message_tab').on('click', function(){
    $(this).addClass(user_id);
    $(this).siblings('.message_flyout').toggle();
});

$('.message_header').on('click', function(){
    console.log('clicked');
    $(this).closest('.message_flyout').toggle();
})
为此:

el.find('.message_tab').on('click', function(){
    $(this).addClass(user_id);
    $(this).siblings('.message_flyout').toggle();
});

el.find('.message_header').on('click', function(){
    console.log('clicked');
    $(this).closest('.message_flyout').toggle();
});
这里有一个例子:。如果这是您需要的,请告诉我:


祝你好运

您的代码工作正常,我看不出问题出在哪里,您所说的以前制作的选项卡没有响应是什么意思???@ZakariaAcharki当我制作两个消息选项卡时,以前的选项卡将不会打开切换相应的消息弹出按钮。
$('.message_tab').on('click', function(){
    $(this).addClass(user_id);
    $(this).siblings('.message_flyout').toggle();
});

$('.message_header').on('click', function(){
    console.log('clicked');
    $(this).closest('.message_flyout').toggle();
})
el.find('.message_tab').on('click', function(){
    $(this).addClass(user_id);
    $(this).siblings('.message_flyout').toggle();
});

el.find('.message_header').on('click', function(){
    console.log('clicked');
    $(this).closest('.message_flyout').toggle();
});