JQuery在Id中选择带有特殊字符的元素

时间:2016-04-07 09:17:49

标签: javascript jquery

我有这个HTML,其中Id包含特殊的字符:

<input type="text" id="e09b989c-7201-4b7e-8fd4-a2309db6d356|b5d9746a-7f7c-432d-a4ef-a5e0011d989d|IssueDate" name="e09b989c-7201-4b7e-8fd4-a2309db6d356|b5d9746a-7f7c-432d-a4ef-a5e0011d989d|IssueDate" value="">
<input type="hidden" id="Type_e09b989c-7201-4b7e-8fd4-a2309db6d356|b5d9746a-7f7c-432d-a4ef-a5e0011d989d|IssueDate" name="Type_e09b989c-7201-4b7e-8fd4-a2309db6d356|b5d9746a-7f7c-432d-a4ef-a5e0011d989d|IssueDate" value="date">
<br>
<input type="text" id="1c36b33a-85d8-4811-93f6-a5e000ad985c|b795c0b4-1c8b-4d9e-95c5-a5e0011d8505|FromDate(mm/dd/yyyy)" name="1c36b33a-85d8-4811-93f6-a5e000ad985c|b795c0b4-1c8b-4d9e-95c5-a5e0011d8505|FromDate(mm/dd/yyyy)" value="" class="">
<input type="hidden" id="Type_1c36b33a-85d8-4811-93f6-a5e000ad985c|b795c0b4-1c8b-4d9e-95c5-a5e0011d8505|FromDate(mm/dd/yyyy)" name="Type_1c36b33a-85d8-4811-93f6-a5e000ad985c|b795c0b4-1c8b-4d9e-95c5-a5e0011d8505|FromDate(mm/dd/yyyy)" value="DateTime">

我正在使用这个JQuery来更新它们:

 $("input[id^='Type_']").each(function () {
        if ($(this).val() == "date" || $(this).val() == "DateTime") {
        console.log($(this).attr('id'));
            var id = $(this).attr('id').replace("Type_", "").replace(/\|/g, "\\|").replace(/\//g, "\\\\\/").replace(/\)/g, "\\\\\)").replace(/\(/g, "\\\\\(");

           console.log(id);
           console.log(">>" + $("#" + id));

            $("#" + id).val(id);
        }
    });

但第二个包含“|”的Id并且“(”未被选中。 我在这里测试:http://jsfiddle.net/MWadX/446/

有人能帮助我吗? 感谢。

2 个答案:

答案 0 :(得分:2)

问题是你是如何逃避特殊字符的,

var id = this.id.replace(/[|\(\)#\\\/]/g, '\\$&');

演示:Fiddle

答案 1 :(得分:0)

            $("input[id^='Type_']").each(function() {
                if ($(this).val() == "date" || $(this).val() == "DateTime") {
                    var tempID = $(this).attr('id');
                    var temp_ID1 = this.id.replace(/[|\(\)#\\\/]/g, '\\$&');
                    console.log(temp_ID1);
                    console.log("#" + temp_ID1);
                }
            });