nodeValue和indexOf在我的情况下不起作用

时间:2014-09-14 00:56:20

标签: javascript jquery

http://jsfiddle.net/b1ekda2j/1/

我的HTML

<dd>
    <br>作詞:汪峰
    <br>作曲:汪峰
    <br>
    <br>他們將你狠狠地遺棄在街口
    <br>流血的腦袋出現混亂的幻覺
    <br>你是否在懷疑你拼死的付出
    <br>是否再一次質疑堅守的信仰

我的js

$(document).ready(function () {
    $('br').each(function () {
        var nodeValue = this.nextSibling.nodeValue;
        console.log(nodeValue);
        if (nodeValue.indexOf(':') > -1) {
            $(this.nextSibling).remove();
            $(this).remove();
        }
    });
});

我想删除包含<br>符号的:,但是使用indexOf并不起作用,为什么?我控制nodeValue,它确实选择了正确的DOM。

2 个答案:

答案 0 :(得分:3)

如果仔细查看符号:在字符串中,您将看到它不是字符:(冒号)。要检查它只是从字符串中复制它并使用charCodeAt方法,如下所示:

':'.charCodeAt(0)

它会给你65306,这是“FULLWIDTH COLON” - http://www.fileformat.info/info/unicode/char/ff1a/index.htm

要搜索它,只需用以下代码替换代码中的冒号:

$(document).ready(function () {
    $('br').each(function () {
        var nodeValue = this.nextSibling.nodeValue;
        if (nodeValue.indexOf(':') > -1) {
            $(this.nextSibling).remove();
            $(this).remove();
        }
    });
});

但最好使用数字形式和评论:

nodeValue.indexOf('\uFF1A') // FULLWIDTH COLON

答案 1 :(得分:2)

那:不是英国人,而是中国人。这就是为什么你搜索的符号不存在的原因。