代码之家  ›  专栏  ›  技术社区  ›  Greg K

jQuery选择器问题查找具有usemap属性的图像

  •  0
  • Greg K  · 技术社区  · 14 年前

    我的页面中有一个图像地图:

    <div id="books">
      <img src="images/books.png" width="330" height="298" border="0" \
       usemap="#map_books" />
      <map name="map_books" id="map_books" alt="books">
        <area shape="poly" coords="17,73,81,288,210,248,254,264, ..." \ 
         href="/about" alt="books" />
      </map>
    </div>
    

    我有一个函数,它尝试使用此映射在文档中查找图像:

    function(elemId) { // elemId = "#map_books"
    
      if ($(elemId).attr("tagName") == "MAP") {
        // find image using this map
        var selector = "img [usemap=\\" + elemId + "]"; 
        var img = $(selector);
    
        if (img.length == 0) {
          console.log("Could not find image using " + selector);
        }
    }
    

    Could not find image using img [usemap=\#map_books]

    我已经逃过了 elemId starts with a hash 并尝试了不同的选择器。

    $("img [usemap$=" + elemId.substring(1) + "]")
    $("img").find("[usemap=\\" + elemId + "]")
    

    3 回复  |  直到 14 年前
        1
  •  2
  •   Dancrumb    14 年前

    img [usemap=\#map_books]

    这将导致尝试匹配 具有属性 usemap 设置为 #map_books .

    您应该使用:

    var selector = "img[usemap=\\" + elemId + "]"; 
    
        2
  •  1
  •   John Fisher    14 年前

    $("img[usemap='#whatever']");
    $('img[usemap="#whatever"]');
    
        3
  •  0
  •   PetersenDidIt    14 年前
    function(elemId) { // elemId = "#map_books"
    
        if ($('map'+elemId).length) {
            // find image using this map
            var selector = "img[usemap=\\" + elemId + "]"; 
            var img = $(selector);
    
            if (img.length == 0) {
                console.log("Could not find image using " + selector);
            }
        }
    }
    

    在img和[]之间有一个额外的空间来获取img的属性。