现在我有一些html看起来像这样一旦渲染。
<div id="MyPartial">
<div id="div+1"></div>
<div id="div+2"></div>
<div id="div+3"></div>
</div>
MyPartial div中的所有div都是动态的。所以可能有3个,或者可能没有。我试图通过ID一次删除一个。
$("#div+" + Id).remove()
这没有用,所以我尝试了这个
$("#MyPartial").children().select("#div+" + Id).remove();
这将删除整个“MyPartial”。 DIV。
我错过了什么?在过去,第一个声明对我来说一直很好,但看起来嵌套现在搞乱了。
编辑:加号让我搞砸了。我把它改成了下划线,它运行正常。谢谢大家。
答案 0 :(得分:4)
请勿在您的ID中使用加号(+)!它是一个选择器(见http://api.jquery.com/next-adjacent-Selector/)
如果你真的想在你的is中使用加号,你应该逃避它(参见http://api.jquery.com/category/selectors/)
示例:
$('#div\\+1').remove();
答案 1 :(得分:2)
class-和id-attributes中不允许+
。在CSS +
中有一个选择器含义。这意味着:选择下一个邻居元素。
也许这就是为什么jQuery无法选择你的元素。尝试为您的ID指定其他名称,例如div_1
,&#39; div_2`,...
之后您可以按其ID $('#div_1')
选择一个元素。
由于ids在整个文档中应该是唯一的,因此该选择器应与$('#myPartial #div_1')
答案 2 :(得分:1)
使用$("#div+" + Id).remove()
。
话虽这么说,ids总是独一无二的。或者他们应该。所以,没有必要在父母中找到。见
7.5.2元素标识符:id和class属性 属性定义 id = name [CS] 此属性为元素指定名称。该名称在文档中必须是唯一的。
编辑:基于评论,说这不起作用并且正常工作
是正确的$( '#DIV \\ + 1')除去();
再说一遍,请参阅this question,虽然我的理解并不禁止加号,但jquery存在问题。如果可能的话,我会删除加号,如果没有,则使用转义版本。
答案 3 :(得分:0)
试试这个
$("#MyPartial #div+" + Id).remove();
答案 4 :(得分:0)
ID应始终是不同的......
尝试制作课程,然后您可以使用$("#MyPartial .div+" + Id)
如果div+1
是一个id两次,则只能访问第一个。
如果ID真的是唯一的(DISTINCT),那么只需使用$("#div+1")
答案 5 :(得分:0)
ID在页面中应该始终是唯一的,您不必担心其父
$("#div+" + Id).remove()
答案 6 :(得分:0)
实际上问题是jquery将逃脱加号.. 如果你做了像
这样的事情怎么办?$(的document.getElementById(同上))。除去()
答案 7 :(得分:0)
你的代码有两个问题。你忘了把id选择器&#34;#&#34;在div选择器前面。 2. id
不能包含&#34; +&#34;。我用&#34; - &#34;取而代之。它运作得很好。
var Id = "1";
$("#div-" + Id).remove()
&#13;
div {
background: blue;
}
div > div {
background: red;
width: 100px;
height: 100px;
display: inline-block;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="MyPartial">
<div id="div-1">1</div>
<div id="div-2">2</div>
<div id="div-3">3</div>
</div>
&#13;