javascript - 单击“追加”按钮,然后再次单击“返回”。?

标签 javascript jquery

无法附加功能性编写的代码。 就像如果单击一个按钮,它将禁用并附加到 div,如果再次单击 div 内部,它将隐藏并再次启用父按钮。

逻辑正在使用比较innerHtml值。现在问题来了,比如具有相同的innerHtml 值。 请帮忙。

Array.from(document.querySelectorAll('.shadowbutton')).forEach(
(button)=>{
    button.addEventListener("click", function(e) {
        let text = e.target.innerHTML;
        let text1 = e.target.innerText;
    console.log(button)
    backbutton();
        this.disabled = true;
        $(this).addClass('disable');
        $('<button class="shadowbutton">' + text + "</button>").appendTo(dottedbox);
    })
}
)


function backbutton() {
    setTimeout(()=>{
        let dbutton = document.querySelectorAll('.dotted-box .shadowbutton');
        let parent = document.querySelectorAll('.dotted-box');
        if ( $(parent).children().length > 0 ) {
            dbutton.forEach(
                (button)=>{
                    button.addEventListener("click", (e)=> {
            console.log(button)
                        let parent = e.target.parentElement;
                        let parentdiv = document.querySelectorAll('.disable');
                        let dgfg = e.target
                        $(dgfg).removeAttr('disabled');
                        parentdiv.forEach(
                            (button)=>{
                                if(e.target.innerHTML == button.innerHTML){
                                    $(button).first().removeAttr('disabled');
                                    $(button).first().removeClass('disable');
                                }
                                else{
                                    //console.log(button)
                                }
                            }
                        )
                        parent.removeChild(e.target);
                    })
                }
            )
    }   
    },100)
}

问题是单击

时同时启用两个

按钮。它应该只启用第一个按钮。 Fiddle

最佳答案

您可以将当前单击的按钮存储在新创建的按钮中作为引用变量,并且您可以使用 event.target 获得相同的按钮新创建的按钮单击

演示

let dottedbox = document.querySelector('.dotted-box');

Array.from(document.querySelectorAll('.shadowbutton')).forEach(button => {button.addEventListener("click",onButtonClick)})

function onButtonClick(e) {

  let text = e.target.innerHTML;
  this.disabled = true;
  $(this).addClass('disable');
  let btn = $('<button class="shadowbutton">' + text + "</button>");
  btn.on("click", (e) => {
    let parent = e.target.parentElement;
    let parentdiv = document.querySelectorAll('.disable');
    let buttton = $(e.target.pBtn);
    //console.log(e.target)
    buttton.removeAttr('disabled');
    buttton.removeClass('disable');
    e.target.remove();
  });
  btn[0].pBtn = e.target;
  btn.appendTo(dottedbox);
}
.dotted-box {
  border: 1px solid #cdcdcd;
  min-height: 70px;
  margin: 2rem 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="event">
  <button class="shadowbutton">&lt;p&gt;</button>
  <button class="shadowbutton">&lt;/p&gt;</button>
  <button class="shadowbutton">&lt;/p&gt;</button>
  <button class="shadowbutton">&lt;p&gt;</button>
  <button class="shadowbutton">Hi all.!</button>
  <button class="shadowbutton">Hello all.!</button>
</div>
<div class="dotted-box">
</div>


您也可以用更少的代码实现与使用 jQuery 相同的效果

演示

$('.shadowbutton').on('click', function() {
  let button = $(this);
  button.prop('disabled', true).addClass('disable');
  let newbtn = $(`<button class="shadowbutton">${button.html()}</button>`);
  newbtn[0].pBtn = this;
  newbtn.appendTo($('.dotted-box')).on("click",newButtonClick);
});

function newButtonClick() {
  let button = $(this);
  let pButtton = $(button[0].pBtn);
  pButtton.prop('disabled',false).removeClass('disable');
  button.remove();
}
.dotted-box {
  border: 1px solid #cdcdcd;
  min-height: 70px;
  margin: 2rem 0;

}
.shadowbutton{
  cursor:pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="event">
  <button class="shadowbutton">&lt;p&gt;</button>
  <button class="shadowbutton">&lt;/p&gt;</button>
  <button class="shadowbutton">&lt;/p&gt;</button>
  <button class="shadowbutton">&lt;p&gt;</button>
  <button class="shadowbutton">Hi all.!</button>
  <button class="shadowbutton">Hello all.!</button>
</div>
<div class="dotted-box">
</div>

关于javascript - 单击“追加”按钮,然后再次单击“返回”。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50177668/

相关文章:

javascript - 如何在 setInterval 完成后传递变量?

javascript - 重新加载 jquery 选项卡会导致重复事件触发

javascript - 如何在 ipad 上使用 javascript 在网络浏览器中播放 wav 文件

javascript - 在 Meteor 中,FS.Store.GridFS TransformWrite 函数中未定义 Images 集合

javascript - 正确改变 react 组件状态

javascript - Jquery冲突?

javascript - HighCharts 实体仪表图不显示刻度

javascript - 如何在 IndexedDB 中创建具有多个条件的查询

javascript - JQMIGRATE : Migrate is installed, 版本 3.0.0 日志,最低版本

javascript - HTML Select/Option 将值传递给 javascript 函数