0

我已经搜索了一些与此相关的问题(例如How to handle special characters in html element id/name in Jquery validation?),但不幸的是它对我没有帮助,或者我没有理解这个技巧......

假设我们有一个带有 class.bt和 id的按钮my|id。(或其他特殊分隔符,如,:;|

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

你可以在这里看到一个例子

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

4

4 回答 4

2

这有效:

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

而不是这个:

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

在这里提琴

-编辑-

显示用法的新小提琴,:;|

于 2013-03-21T18:24:37.693 回答
2

这是与纯 jQuery 解决方案的偏差,但在这种情况下,使用本机document.getElementById(...)函数可能会更好吗?

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

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

于 2013-03-21T18:30:44.693 回答
1

像这样?

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

http://jsfiddle.net/S669p/

于 2013-03-21T18:21:03.460 回答
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/

于 2013-03-21T18:34:25.597 回答