使用jQuery检查文本是否等于html特殊字符

时间:2012-03-23 18:39:38

标签: jquery html

我有一个html特殊字符,我想像一个复选框一样关闭和打开。在这种情况下,它是一个明星:☆可以填补:★。

我想在点击它时检查星的状态。

$(".action_table_star").click(function() {
    if ($(this).html() == "★") {
        $(this).html("☆");
        $(this).css('color', 'white');
    } else {
        $(this).html("★");
        $(this).css('color', 'rgb(255,165,0)');
    }
});

这不起作用,因为$(this).html()永远不会等于“&#9733”。我怎么能重写这个if语句我想解码html特殊字符并检查它的“状态”?

6 个答案:

答案 0 :(得分:2)

不要使用.html(),而是将.text()\uxxxx序列结合使用,或String.fromCharCode()

$(".action_table_star").click(function() {
    if ($(this).text() == String.fromCharCode(9733)) {
        $(this).html("☆");
        $(this).css('color', 'white');
    } else {
        $(this).html("★");
        $(this).css('color', 'rgb(255,165,0)');
    }
});

使用\uxxxx方法时,必须将base-10数字字符代码转换为base-16字符。示例(在控制台中):

(9734).toString(16);
// Returns 2606. Now, paste `"\u2606"` in your code

不要忘记填充足够的零以获得4位数。

答案 1 :(得分:1)

我的建议不是依赖于一个角色,而是依次添加和删除一个类,如下所示:

$(".action_table_star").click(function(e) {
    if ($(this).hasClass("star-checked")) {
        $(this).css('color', 'rgb(255,165,0)').text("☆");
    }
    else {
        $(this).css('color', '#fff').text("★");
    };
    $(this).toggleClass("star-checked");
})

See Demo jsFiddle HERE

答案 2 :(得分:1)

这似乎有效

escape($(this).html()) == "%u2605"

其中%u2605是已填充的星号符号。

答案 3 :(得分:0)

不,$(this).html()永远不会等于★,但等于★

http://jsfiddle.net/hJdg4/1/

$(".action_table_star").click(function() {
    if ($(this).html() == "★") {
        $(this).html("☆");
        $(this).css('color', 'green');
    } else {
        $(this).html("★");
        $(this).css('color', 'rgb(255,165,0)');
    }
});

答案 4 :(得分:0)

你试过$(this).text()=='★'

答案 5 :(得分:0)

改进SpYk3HH的建议,我会通过在文档中添加两个星号来处理此问题,一个使用display:none,并使用jQuery在点击时切换它们。

另一个好处是,您现在可以使用CSS而不是jQuery单独设置每个星形的样式,这应该是原样。

HTML:

<div class="action_star">
  <span class="star1">&#9733;</span>
  <span style="display:none" class="star2">&#9734;</span>
</div>

JS:

$('.action_star').click(function() {
    $(this).find('.star1,.star2').toggle();
});

http://jsfiddle.net/cfjT5/1/

代码更少,更清晰,更易读,更好。

相关问题