jquery css选择器将Class添加到具有背景图像的div

标签 jquery css google-maps-api-3

我正在使用 Google Maps API V3 开发高级 map 应用程序。我使用一系列字母标记作为 map 上的图钉 (A-J)。我编写了一些 jQuery 来为每个包含标记作为背景图像的 div 添加不同的类,以便我可以为标记设置动画。这是我用来执行此操作的代码:

$('.markersHolder > div').each(function(){
           if ($(this).css('background-image') === 'url(http://www.axtsweapons.com/gmarkers/red_MarkerA.png)'){
             $(this).addClass('marker0');
           }
           if ($(this).css('background-image') === 'url(http://www.axtsweapons.com/gmarkers/red_MarkerB.png)'){
             $(this).addClass('marker1');
           }
           if ($(this).css('background-image') === 'url(http://www.axtsweapons.com/gmarkers/red_MarkerC.png)'){
              $(this).addClass('marker2');
           }
           if ($(this).css('background-image') === 'url(http://www.axtsweapons.com/gmarkers/red_MarkerD.png)'){
              $(this).addClass('marker3');
           }
           if ($(this).css('background-image') === 'url(http://www.axtsweapons.com/gmarkers/red_MarkerE.png)'){
              $(this).addClass('marker4');
           }
           if ($(this).css('background-image') === 'url(http://www.axtsweapons.com/gmarkers/red_MarkerF.png)'){
              $(this).addClass('marker5');
           }
           if ($(this).css('background-image') === 'url(http://www.axtsweapons.com/gmarkers/red_MarkerG.png)'){
              $(this).addClass('marker6');
           }
           if ($(this).css('background-image') === 'url(http://www.axtsweapons.com/gmarkers/red_MarkerH.png)'){
              $(this).addClass('marker7');
           }
           if ($(this).css('background-image') === 'url(http://www.axtsweapons.com/gmarkers/red_MarkerI.png)'){
              $(this).addClass('marker8');
           }
           if ($(this).css('background-image') === 'url(http://www.axtsweapons.com/gmarkers/red_MarkerJ.png)'){
              $(this).addClass('marker9');
              return false;
           }
         });

这在 Firefox 中完美运行,但在其他浏览器中不起作用。有人知道如何让它在其他浏览器中工作吗?谢谢!

最佳答案

试试这个。它应该找到背景图像 URL 的“MarkerA”(等)部分,如果找到,则使用大写字母的字符代码添加类,以计算您的 1、2、3 等。 “marker”类(我没有测试过):

$('.markersHolder > div').each(function(){

   var mark = $(this).css('background-image').match(/Marker./);
   if(mark) {
     $(this).addClass("marker"+(mark[0].charCodeAt(mark[0].length-1)-65));
   }
});

在编辑时添加了此内容:

如果您按照 mcgrailm 在 Pekka 的评论中建议的那样将类名称与图像名称相匹配,那么它可能只是:

$('.markersHolder > div').each(function(){
   var mark = $(this).css('background-image').match(/Marker./);
   if(mark) {
     $(this).addClass(mark[0]);
   }
});

关于jquery css选择器将Class添加到具有背景图像的div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3267897/

相关文章:

html - 我可以用文本 "as-is"制作一个 css div 吗?

google-maps-api-3 - 谷歌事件监听器触发后如何在 angular2 更改后更新 View ?

javascript - 谷歌地图加载旧金山然后重新加载正确的位置

android - 谷歌地图多个标记不显示,一个显示另一个隐藏反之亦然

javascript - 如何完全删除 jQuery.prototype 插件?

可以从 PHP 动态生成多个按钮的 Javascript

jquery - 单击事件后禁用伪悬停类

javascript - jquery_ujs 与 Rails 4 中的 Kaminari AJAX 冲突?

html - 如何更改每个图像的大小?

javascript - 如何让 div scroll overflow-x 在移动浏览器上工作?