删除id =“。xxx”的div或span

时间:2010-06-26 16:11:11

标签: jquery html css

我无法删除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>

由于 让

8 个答案:

答案 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字符串的限制是:

  1. 必须是唯一的
  2. 必须至少包含一个字符
  3. 不得包含任何空格字符
  4. 引用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>