当 class 未知时,JS 在两个 div 之间添加悬停 class。
JS adding hover class between two divs when the class is unknown.
我有一些酒店的地图视图和列表视图,它们具有以下属性:
/*List Result*/
<div class="hotel-result hotel-23456">
...Content...
</div>
/*Map Result*/
<div class="map-hotel-result hotel-23456">
...Content...
</div>
两个元素 hotel-23456
共享的 class 在每个酒店结果中都会发生变化,因为它是通过将字符串 (hotel-
) 与酒店的数据库 ID 连接起来创建的。
我希望使用 jQuery 发生的是,当用户将鼠标悬停在列表结果上时,地图结果会收到附加的 class of hover
,这将突出显示它在地图上。
我遇到的问题是任何时候最多可以显示 50 家酒店,我不确定如何 select 并在 hotel-[id]
class 时将两者绑定不断变化?对此有任何建议将不胜感激。
如果您的 类 正如您所指出的那样 - 您可以这样做:
$('.hotel-result').on('mouseenter',function(){
var classname = $(this).attr('class');//result should be 'hotel-result hotel-2465';
var mapclass = '.map-'+classname.replace(/ /g,'.');//this is basically replacing 'space' globally with '.', class identifier in jQuery
$(this).addClass('Your_hover_class');
$(mapclass).addClass('your_hover_class');
});
这应该有效。不用说,同样你必须绑定一个 mouseleave 来删除 类.
正要建议! @david 的 data-id 解决方案是正确且非 hacky 的方法。
我已经排除了我可能如何处理这个问题。代码未经测试,但应该给你大致的想法。
<div data-hotel-id="23456" class="hotel-result hotel-23456">
...Content...
</div>
/*Map Result*/
<div class="map-hotel-result hotel-23456">
...Content...
</div>
var $hotelListResults = $('.hotel-result');
var $hotelMapResults = $('.hotel-map-result');
$hotelListResults.hover(function(){
var hId = $(this).data('hotel-id');
$hotelMapResults.not('.hotel-'+hId).removeClass('hover');
$('.hotel-'+hId).addClass('hover');
});
我有一些酒店的地图视图和列表视图,它们具有以下属性:
/*List Result*/
<div class="hotel-result hotel-23456">
...Content...
</div>
/*Map Result*/
<div class="map-hotel-result hotel-23456">
...Content...
</div>
两个元素 hotel-23456
共享的 class 在每个酒店结果中都会发生变化,因为它是通过将字符串 (hotel-
) 与酒店的数据库 ID 连接起来创建的。
我希望使用 jQuery 发生的是,当用户将鼠标悬停在列表结果上时,地图结果会收到附加的 class of hover
,这将突出显示它在地图上。
我遇到的问题是任何时候最多可以显示 50 家酒店,我不确定如何 select 并在 hotel-[id]
class 时将两者绑定不断变化?对此有任何建议将不胜感激。
如果您的 类 正如您所指出的那样 - 您可以这样做:
$('.hotel-result').on('mouseenter',function(){
var classname = $(this).attr('class');//result should be 'hotel-result hotel-2465';
var mapclass = '.map-'+classname.replace(/ /g,'.');//this is basically replacing 'space' globally with '.', class identifier in jQuery
$(this).addClass('Your_hover_class');
$(mapclass).addClass('your_hover_class');
});
这应该有效。不用说,同样你必须绑定一个 mouseleave 来删除 类.
正要建议! @david 的 data-id 解决方案是正确且非 hacky 的方法。
我已经排除了我可能如何处理这个问题。代码未经测试,但应该给你大致的想法。
<div data-hotel-id="23456" class="hotel-result hotel-23456">
...Content...
</div>
/*Map Result*/
<div class="map-hotel-result hotel-23456">
...Content...
</div>
var $hotelListResults = $('.hotel-result');
var $hotelMapResults = $('.hotel-map-result');
$hotelListResults.hover(function(){
var hId = $(this).data('hotel-id');
$hotelMapResults.not('.hotel-'+hId).removeClass('hover');
$('.hotel-'+hId).addClass('hover');
});