带加号的jQuery

med*_*edk 5 html javascript jquery jquery-selectors

我想知道为什么jQuery不允许"+"符号.这是一个如何使用"1"和"3"而不是"2+"的示例.只需将鼠标悬停在每个div上方的文本上.

<div id="div-2+"></div>
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

$('a.hover').mouseover(function() {

    dataI = $(this).data('i');

	$('div#div-' + dataI).addClass('h');

});

$('a.hover').mouseout(function() {

    dataI = $(this).data('i');

	$('div#div-' + dataI).removeClass('h');

});
Run Code Online (Sandbox Code Playgroud)
a {
    display: inline-block;
    width: 100px;
    margin: 60px 20px 60px 0;
    text-align: center;
}

div {
    display: inline-block;
    width: 100px;
    height: 100px;
    margin-right: 20px;
    background-color: #ddd;
}

div.h {
    background-color: #f00;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a class="hover" data-i="1">DIV 1</a>

<a class="hover" data-i="2+">DIV 2+</a>

<a class="hover" data-i="3">DIV 3</a>

<br />

<div id="div-1"></div>

<div id="div-2+"></div>

<div id="div-3"></div>
Run Code Online (Sandbox Code Playgroud)

Ale*_*ara 10

最可能的原因是加号是相邻的CSS选择器,这会导致jQuery使用的Sizzle选择器库假设您指的是相邻的选择器.

解决此问题的一种方法是使用选择id属性的属性选择器.虽然很多人会争辩说加一个加号id是个坏主意.

工作实例:

$('a.hover').mouseover(function() {

    dataI = $(this).data('i');

	$('div[id="div-' + dataI + '"]').addClass('h');

});

$('a.hover').mouseout(function() {

    dataI = $(this).data('i');

	$('div[id="div-' + dataI + '"]').removeClass('h');

});
Run Code Online (Sandbox Code Playgroud)
a {
    display: inline-block;
    width: 100px;
    margin: 60px 20px 60px 0;
    text-align: center;
}

div {
    display: inline-block;
    width: 100px;
    height: 100px;
    margin-right: 20px;
    background-color: #ddd;
}

div.h {
    background-color: #f00;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a class="hover" data-i="1">DIV 1</a>

<a class="hover" data-i="2+">DIV 2+</a>

<a class="hover" data-i="3">DIV 3</a>

<br />

<div id="div-1"></div>

<div id="div-2+"></div>

<div id="div-3"></div>
Run Code Online (Sandbox Code Playgroud)