如何使用/传输包含特殊字符的attr('id')?

时间:2013-03-21 18:08:16

标签: javascript jquery special-characters

我已经搜索了一些有关此问题的问题(例如How to handle special characters in html element id/name in Jquery validation?),但遗憾的是它并没有帮助我,或者我没有做过这样的伎俩......

我们假设我们有一个按钮,其中包含课程.bt和ID my|id。 (或其他特殊分隔符,如,:;|

似乎无法使用它来匹配其他元素,例如$('#other_'+$('.bt').attr('id'))

您可以看到example here

所以我的问题是,如何传输这些特殊字符(,:;|)?

4 个答案:

答案 0 :(得分:2)

这有效:

$('[id="div_' + id + '"]').html(id);

而不是:

$('#div_'+id).html(id);

小提琴here

- 编辑 -

显示,:;|

用法的

New fiddle

答案 1 :(得分:2)

这是对纯jQuery解决方案的偏离,但在这种情况下,最好使用原生document.getElementById(...)函数?

$(document.getElementById('other_' + $('.bt').attr('id')))

它读起来有点冗长,但似乎比用正则表达式更加清晰/一致/安全。

答案 2 :(得分:1)

喜欢这个吗?

$('#other_' + $('.bt').attr('id').replace('|', '\\|'));

http://jsfiddle.net/S669p/

答案 3 :(得分:1)

这是一个仍然使用id选择器的示例,但也允许您希望能够使用的任何特殊字符:

$(document).ready(function () {
    $(".bt").on("click", function () {
        var escaped = $(this).attr("id").replace(/([,:;|])/g, "\\$1");
        console.log("escaped: " + escaped);
        $("#other_" + escaped).toggleClass("testing");
    });
});

http://jsfiddle.net/Bz3Kw/1/