【问题标题】:jQuery get elements that contain form in idjQuery获取id中包含表单的元素
【发布时间】:2013-06-05 01:03:46
【问题描述】:

我正在尝试使用 jquery 从我的页面中获取一个元素:

元素:

<a href="path" id="form1:ctlName">

我正在尝试获取这样的元素但失败了:

$('#form1:ctlName')

虽然这种方式有效:

document.getElementById('form1:ctlName');

问题是我需要 .css 属性,它只是 jquery。

有人知道如何使用 jquery 获得控件吗?

【问题讨论】:

  • 来自documentation: "要使用任何元字符(例如!"#$%&amp;'()*+,./:;&lt;=&gt;?@[\]^`{|}~)作为名称的文字部分,必须使用两个反斜杠对其进行转义: \\." : 是一个元字符。

标签: javascript jquery css background


【解决方案1】:

问题在于选择器中的:,因为jQuery 试图将其解释为选择器的扩展。选择器冒号的一些用途是伪类:first:last,您可以在here 找到这些选择器扩展的完整列表。

试试这些选择器:

$("[id='form1:ctlName']"); //Method one, encapsulating the id
$("#form1\\:ctlName");     //Method two, escaping the colon

这是一个有效的demo

请注意,根据 this answer,调用原生 javascript 方法 getElementById(yourId) 将比其他方法快 10 倍,因此如果性能至关重要,您可能需要考虑使用它。

【讨论】:

    【解决方案2】:

    比其他答案更高效(遍历所有元素以检查 ID 属性),是这样的:

    $(document.getElementById('form1:ctlName'))
    

    jQuery 只是一个包装 DOM 元素的函数。您可以毫无问题地将 DOM 元素传递给它。

    【讨论】:

      【解决方案3】:

      那是因为 ':' 在 jQuery 中具有特殊的含义。你应该逃避它。

      $('#form1\:ctlName'); // Does not work
      

      显然你应该用两个斜杠转义它:

      $('#form1\\:ctlName'); // Works
      

      【讨论】:

        【解决方案4】:

        用两个“\”转义:

        $('#form1\\:ctlName')
        

        - 有一个“\”,它不起作用。 http://jsfiddle.net/m8Vrt/
        - 有两个“\”,它可以工作http://jsfiddle.net/eQT6w/1/

        【讨论】:

          【解决方案5】:

          试试这个

          <a href="path" id="form1_ctlName">
          $('#form1_ctlName')
          

          只需将 : 替换为 _

          :在 jquery 选择器中是受限字符 检查这个网址

          http://api.jquery.com/animated-selector/

          【讨论】:

            猜你喜欢
            • 2011-02-23
            • 2012-03-14
            • 1970-01-01
            • 2021-02-08
            • 2021-12-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-02-14
            相关资源
            最近更新 更多