我无法删除ID为句点或星号的div。
<div id="*xxx."></div>
<div id=".xxx*"></div>
我有jquery代码,删除<div id="xxx"></div>
但不删除上面的代码。不是在寻找jQuery代码,而是需要正斜杠?
----请求anurag --------
// JavaScript
$('.s').click(function (e) {
var wd_del = (e.target.id);
var yy = wd_del.substr(1, 100);
$(document.getElementById("" + yy)).remove();
$(document.getElementById("s" + yy)).remove();
});
// HTML
<div id="s_t">
<? do { $w1=$ row_ws1[ 'wd']; ?>
<div id="<? echo $w1 ?>" class="ul_shh" style="cursor:pointer;">
<span id="s<? echo $w1 ?>" class="s">
x
</span>
<? echo $w1; ?>
</div>
<? } while ($row_ws1=m ysql_fetch_assoc($ws1)); ?>
</div>
由于 让
答案 0 :(得分:8)
ID不能以点开头,也不能包含星号。有关详细信息,请阅读此answer from dgvid。
答案 1 :(得分:5)
$("[id='*xxx.']").remove();
或只写正确的标识符。
答案 2 :(得分:3)
ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。
答案 3 :(得分:2)
我认为你可以毫不费力地搞任何身份证。依靠文档结构来提供信息。看起来你有一个div列表,其中每个div可以通过点击div中存在的x
来删除。
所以如果你有一个像这样的结构:
<div class="node">
<span class="delete"> x </span>
...
</div>
<div class="node">
<span class="delete"> x </span>
..
</div>
将删除事件分配给所有范围,
$("span.delete").click(function() {
$(this).parent('.node').remove();
});
只要您坚持将div放在div中并指定适当的类名的基本结构,那么这应该让您不必依赖id。如果您想知道被点击元素的父元素的ID,请将其存储为数据属性而不是ID。这使jQuery和旧浏览器保持高兴。例如,
<div class="node" data-id="*xxx.">
...
</div>
可以在span单击处理程序中检索,如下:
$("span.delete").click(function() {
var node = $(this).parent('.node');
var id = node.attr('data-id'); // do something with it
});
使用本机getElementById
方法进行查询,以确保在用户代理认为该元素是有效ID时选择该元素。 jQuery将对传入的ID进行一些额外的处理,因此最好本机查询:
$(document.getElementById("*xxx.")).remove();
$(document.getElementById(".xxx*")).remove();
或者使用*
转义字符.
和\\
。这是一个jQuery-esque解决方案
$("#\\*xxx\\.").remove();
$("#\\.xxx\\*").remove();
适用于所有moojor浏览器。 IE会自己测试:) See this example。
请注意,根据HTML5构成有效ID字符串的限制是:
引用spec:
id属性指定其元素的唯一标识符(ID)。元素的主子树中的所有ID中的值必须为唯一,必须至少包含一个字符。值不得包含任何空格字符。
如果值不是空字符串,则用户代理必须将元素与给定值(确切地,包括任何空格字符)相关联,以便在元素的主子树中进行ID匹配(例如,对于CSS中的选择器或DOM中的 getElementById()方法。
答案 4 :(得分:2)
全局方法,如果您不知道“xxx”是什么。
var x = $("span,div");
x.each
(
function ()
{
var y = $(this);
if ( /[\.\*]/.test (y.attr ('id') ) )
y.remove ();
}
);
答案 5 :(得分:1)
在纯JavaScript中,您可以使用:
var tmp = document.getElementById('xyz');
tmp.parentNode.removeChild(tmp);
答案 6 :(得分:0)
Babiker的解决方案有效。或者你可以这样做:
$("div").each(function(index, elem) {
if ($(elem).attr("id") == "*xxx." || $(elem).attr("id") == ".xxx*") {
$(elem).remove();
}
});
甚至更好,这个:
$("#\\*xxx\\.").remove();
$("#\\.xxx\\*").remove();
答案 7 :(得分:0)
有一个工具:http://mothereffingcssescapes.com/#*xxx.
HTML:
<p id="*xxx.">foo bar</p>
CSS:
<style>
#\*xxx\. {
background: hotpink;
}
</style>
JavaScript的:
<script>
// document.getElementById or similar
document.getElementById('*xxx.');
// document.querySelector, jQuery or similar
$('#\\*xxx\\.');
</script>