开发者

jQuery: dealing with a space in the id attribute

I have an element with id="A B". The following code fails:

<input type="text" id="A B">
<script>$("#A B").click(function(){alert();});</script>

The following code does not fail:

<i开发者_JAVA技巧nput type="text" id="AB">
<script>$("#AB").click(function(){alert();});</script>


While it’s technically invalid to have a space in an ID attribute value in HTML (see @karim79’s answer), you can actually select it using jQuery.

See http://mothereffingcssescapes.com/#A%20B:

<script>
  // document.getElementById or similar
  document.getElementById('A B');
  // document.querySelector or similar
  $('#A\\ B');
</script>

jQuery uses a Selectors API-like syntax, so you could use $('#A\\ B'); to select the element with id="A B".

To target the element in CSS, you could escape it like this:

<style>
  #A\ B {
    background: hotpink;
  }
</style>


Neither HTML4 nor HTML5 allows space characters in ID attribute values.

The HTML 4.01 spec states that ID tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens (-), underscores (_), colons (:), and periods (.). For the class attribute, there is no such limitation. Classnames can contain any character, and they don’t have to start with a letter to be valid.

HTML5 gets rid of the additional restrictions on the id attribute. The only requirements left — apart from being unique in the document — are that the value must contain at least one character (can’t be empty), and that it can’t contain any space characters.

Source:

http://mathiasbynens.be/notes/html5-id-class


As they mentioned you shouldn't use spaces in id. But anyway, wouldn't this be working for you?

$("[id='A B']").click(...)

EDIT: yes it works, tested it!!! Don't kill me, standard-lovers!! ;-P


There should not be space in an id, but this seems to works :

$("[id=A B]")


ID tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

That quote is pulled from another stackoverflow answer: jquery IDs with spaces

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜