Javascript Jquery在生成列表元素时单击奇怪行为

Javascript Jquery在生成列表元素时单击奇怪行为,javascript,jquery,dom,onclick,Javascript,Jquery,Dom,Onclick,我将先发布代码,然后尝试详细说明我的问题 projNav.on('click', '#editProj', function(event) { event.preventDefault(); clearContent(returned); clearContent(projEditor); var editMain = $('#editMain'),

我将先发布代码,然后尝试详细说明我的问题

            projNav.on('click', '#editProj', function(event) {
            event.preventDefault();
            clearContent(returned);
            clearContent(projEditor);

            var editMain = $('#editMain'),
                editNav = $('#editNav'),
                layerCount = 1;

            // Add new layer button
            projEditor.html('<div id="editNav"><ul id="layers"><li id="new_layer">+</li></ul></div><div id="editMain"></div>');
            // Add new layer button functionality
            projEditor.on('click', '#new_layer', function(event) {
                event.preventDefault();
                $('#layers').append('<li id="layer" name="layer'+layerCount+'">'+layerCount+'</li>');
                layerCount++;
            });

            // Clicking on layer functionality
            projEditor.on('click', '#layer', function(event) {
                event.preventDefault();
                var name = $(this).attr('name');
                console.log(name);
            });             
        });
projNav.on('click','editProj',函数(事件){
event.preventDefault();
clearContent(返回);
clearContent(projEditor);
var editMain=$(“#editMain”),
editNav=$(“#editNav”),
层计数=1;
//添加新图层按钮
html(“
  • +
”); //添加新图层按钮功能 projEditor.on('click','new#u layer',函数(事件){ event.preventDefault(); $(“#layers')。追加(“
  • “+layerCount+”
  • ”); layerCount++; }); //点击图层功能 projEditor.on('click','#layer',函数(事件){ event.preventDefault(); var name=$(this.attr('name'); console.log(名称); }); });
    所以基本上我们这里有一个按钮(#editproj),点击它会生成另一个按钮(#new#u layer),允许用户在“ul”中创建一个列表元素,最后一个按钮也是其中的一部分

    如果只按一次#editProj按钮,则效果良好,但是如果单击两次,然后单击#new#u layer按钮,则会添加两次“li”元素。那么,单击#editProj按钮多少次,“li”元素被插入多少次

    我很想了解这种行为,但我似乎在任何地方都找不到类似的帖子,所以如果有人能把我引向正确的方向,我将非常感激


    干杯

    您需要先将
    打开
    设置为
    关闭
    ,然后再将其设置为
    打开

    成功

     projEditor.off('click', '#new_layer' ); //this line is required to set on to off
     projEditor.on('click', '#new_layer', function(event) {
                    event.preventDefault();
                    $('#layers').append('<li id="layer" name="layer'+layerCount+'">'+layerCount+'</li>');
                    layerCount++;
                });
    
    projEditor.off('click','new#u layer')//这条线需要设置为on到off
    projEditor.on('click','new#u layer',函数(事件){
    event.preventDefault();
    $(“#layers')。追加(“
  • “+layerCount+”
  • ”); layerCount++; });
    您需要先将
    打开
    设置为
    关闭
    ,然后再将其设置为
    打开

    成功

     projEditor.off('click', '#new_layer' ); //this line is required to set on to off
     projEditor.on('click', '#new_layer', function(event) {
                    event.preventDefault();
                    $('#layers').append('<li id="layer" name="layer'+layerCount+'">'+layerCount+'</li>');
                    layerCount++;
                });
    
    projEditor.off('click','new#u layer')//这条线需要设置为on到off
    projEditor.on('click','new#u layer',函数(事件){
    event.preventDefault();
    $(“#layers')。追加(“
  • “+layerCount+”
  • ”); layerCount++; });
    试试这个代码。它允许一次单击并防止处理双击和多次单击的代码。 参考以下链接了解更多信息。 我想它会很好用的

    试试这个代码。它允许一次单击并防止处理双击和多次单击的代码。 参考以下链接了解更多信息。
    我想它会很好用。

    效果很好。非常感谢,伙计,我将阅读关于off()函数的内容来理解它的行为。工作起来很有魅力。非常感谢,伙计,我将阅读关于off()函数的内容以了解其行为。这是我尝试的第一件事,但这会在一次单击后禁用按钮,这不是导航按钮所需的行为。.off()函数正是我所需要的。这是我尝试的第一件事,但它会在单击一次后一起禁用按钮,这不是导航按钮所需的行为。.off()函数正是我所需要的。