Most likely, because the plus sign is an adjacent CSS selector , which causes the use of the Sizzle selector library used by jQuery to suggest that you have a neighboring selector in mind.
One way: use an attribute selector that selects the id attribute. Although many people claim that the plus sign in id is a bad idea.
Working example:
$('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'); });
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; }
<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>
source share