为什么我的按钮不会被删除?

时间:2015-04-15 00:47:09

标签: javascript jquery

document.getElementById("roster").innerHTML += "<button onclick=\"doSomething()\">+</button>\n" +
                                                    "<span onClick=\'$(this).remove();" +
                                                    "$(this).prev().remove();" +
                                                    "oiDelete(\"" + str + "\");" +
                                                    "removeCost(\"" + str + "\");" +
                                                    "selectedItem(\"" + str + "\");" +
                                                    "frDelete(\"" + str + "\")\';>" +
                                                    str + "</span><br>";

所以这是我正在研究的Javascript函数内部。它应该做的是创建可点击的文本区域(跨度),在单击时消失,并在单击文本时应该删除的可单击文本之前生成一个按钮。我可以让文本消失得很好,但是我无法使用该按钮消失。

生成的代码是:

<button onclick="doSomething()">+</button>
<span onclick="$(this).remove();
$(this).prev().remove();
oiDelete("Marneus Calgar");
removeCost("Marneus Calgar");
selectedItem("Marneus Calgar");
frDelete("Marneus Calgar")" ;="">Marneus Calgar</span>

为什么在开始范围标记的末尾生成=""?为什么按钮没有正确删除? $(this).prev().remove()不是正确的选项吗?

2 个答案:

答案 0 :(得分:2)

如果我们抛弃最佳做法,这就是工作代码。

document.getElementById("roster").innerHTML += "<button onclick=\"doSomething()\">+</button>\n" +
                                                "<span onClick=\'$(this).prev().remove();" +
                                                "$(this).remove();" +
                                                "oiDelete(\"" + str + "\");" +
                                                "removeCost(\"" + str + "\");" +
                                                "selectedItem(\"" + str + "\");" +
                                                "frDelete(\"" + str + "\")\'>" +
                                                str + "</span><br>";

您的代码不起作用的原因是因为您正在移除具有onclick功能的span。这意味着它无法到达$(this).prev().remove()位。

我希望这是有道理的。

如果您想加倍努力,则应将$(this).remove();放在frDelete()功能之后。否则,您调用的那4个函数将永远不会被调用。

答案 1 :(得分:0)

你弄乱了引号,当然 - 最后调用自我删除代码(!)

一个提示 - 将这些附加功能封装在一个程序中 - 它有助于保持代码清洁。

&#13;
&#13;
document.getElementById('roster').innerHTML += '<button onclick=\'doSomething()\'>+</button>' +
'<span onClick="doCalls(); $(this).prev().remove(); $(this).remove(); ">' + str + '</span><br>';
&#13;
&#13;
&#13;