【问题标题】:duplicated DIV's buttons not functioning重复的 DIV 按钮不起作用
【发布时间】:2020-06-19 13:17:31
【问题描述】:

我正在实现一个井字游戏,但有特殊说明,当我按下一个按钮时,它会打开一个新的游戏 DIV 并禁用旧的 DIV,并且按下的按钮必须在两个 DIV 等中更改,但我有这里有个小问题。 为什么另一个 div 函数中的按钮不像第一个那样工作?

var c = new Number(); 
c=0;
i=0;

var name = "xo"+c;
    
$(document).ready(function() {
    $(".btn").click(function(){
        alert("hi");
    		newDiv = document.createElement("div");
        newDiv.className="xo";
    		var $copy =$("#xo0").html()
    		document.getElementById(name).appendChild(newDiv);
        var allChildNodes = document.getElementById(name).getElementsByTagName('*');
        for(var i = 0; i < allChildNodes.length; i++)
        {
            allChildNodes[i].disabled = true;
        }	
    		c++;
    		name = "xo"+c;
    		newDiv.id=name; 
    		alert(name);
    		
    		$("#"+name).html($copy);
    		$("#"+name).insertAfter($("#xo0"));
    });
});
.xo {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 15px;
    background-color: #F03;
    height: 300px;
    width: 310px;
    text-transform: capitalize;
    float: left;
}
.btn {
    background-color: #0C9;
    height: 100px;
    width: 100px;
}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    
<div align="left" class="xo" id="xo0">
    <input type="submit" class="btn" name="1" id="1" value="Submit" />
    <input type="submit" class="btn" name="2" id="2" value="Submit" />
    <input type="submit" name="3" class="btn" id="3" value="Submit" />
        
    <input type="submit" name="3" class="btn" id="4" value="Submit" />
    <input type="submit" name="3" class="btn" id="5" value="Submit" />
    <input type="submit" name="3" class="btn" id="6" value="Submit" />
         
    <input type="submit" name="3" class="btn" id="7" value="Submit" />
    <input type="submit" name="3" class="btn" id="8" value="Submit" />
    <input type="submit" name="3" class="btn" id="9" value="Submit" />
        
    <br>
</div>

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    .click() 函数仅将事件处理程序绑定到当前存在的匹配元素。要将处理程序附加到动态添加的元素,您可以使用 .on() 方法使用事件委托,如下所示:

    $(document).on('click','.btn',function(){...})

    【讨论】:

    • 感谢您的出色回答,但现在我在单击新 div 按钮时遇到问题,原来的 div 得到了更改,而不是我试图更改的那个
    • @AhmedShaaban 不确定您所说的“改变”是什么意思,this 是否解决了这个问题..?如果你在另一个 Q 中解释你想要做什么会更好,因为如果你使用纯 jquery,看起来这可以用更少的代码来完成...... :)
    • 太棒了 :) 只是一个旁注——你可以在 js 中使用 document.getElementById(name).childNodes; 而不是 document.getElementById(name).getElementsByTagName('*');,更好的是 $('#'+name).children() 使用查询..
    猜你喜欢
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 2012-05-13
    • 2018-01-24
    • 2023-04-01
    相关资源
    最近更新 更多