转义的ID是否不适用于某些jQuery函数?

时间:2019-01-25 19:20:15

标签: jquery event-handling escaping id

我有一个选择框,并且编写了一些代码,如果再次单击相同的选项,它将允许它自己取消选择。效果很好,但是当我更改元素的id以包含转义字符时,它不起作用。它可能有一个非常简单的答案,但是我没有足够的经验来告诉它是什么。有人可以建议我应该开始寻找什么地方吗?

我提供了一个小提琴来说明问题。 HTML部分中有两个文本框,其中之一已停用。保存的一个有效,如果您切换到另一个,然后运行它,除了HTML元素的某些ID包含句点之外,这是完全相同的,该代码不起作用。在执行功能时,我已经转义了所有ID,所以我不确定自己可能会缺少什么。

.value

这段期间似乎没有执行的JS代码包括ID:

<!--TEST BLOCK NO 1 - Works as intended  -->
<select id="S2" size=5 style="width: 200px">
  <option id="SO3">Test0</option>
  <option id="SO4">Test1</option>
  <option id="SO5">Test2</option>
</select>
<!---->

<!--TEST BLOCK NO 2 - Does not work (Add close bracket to activate)
<select id="S2" size=5 style="width: 200px">
  <option id="SO2.3">Test0</option>
  <option id="SO2.4">Test1</option>
  <option id="SO2.5">Test2</option>
</select>
<!---->

其中jqID =“#SO2 \\。3”或选择了任何选项

Full JS included with fiddle.

深入研究,似乎当在代码中执行相同的语句时,它们只是执行而无需执行任何操作。但是,如果我在控制台中键入它,它确实可以工作。这让我非常困惑可能发生的事情。任何帮助表示赞赏!谢谢!

编辑: 我不知道,我不认为这是重复的,我确实看过其他文章以获取此代码,因为它告诉我包括2个斜杠。至少我看完之后做错了事...

1 个答案:

答案 0 :(得分:0)

因为您的代码正在传递生成的字符串,所以您只需要一个\而不是两个。那应该可以解决问题。

其他阅读:

How do I get jQuery to select elements with a . (period) in their ID?

https://learn.jquery.com/using-jquery-core/faq/how-do-i-select-an-element-by-an-id-that-has-characters-used-in-css-notation/