Проблема выбора селектора jQuery с атрибутом usemap - PullRequest
0 голосов
/ 28 марта 2010

У меня есть карта изображений на моей странице:

<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, поскольку он начинается с хеша и пробовал варианты селекторов.

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

Ни найти изображение. Есть идеи?

Ответы [ 3 ]

2 голосов
/ 28 марта 2010

У вас есть пробел между img и [usemap=\#map_books].

Это приводит к попытке сопоставить дочерний элемент img с атрибутом usemap, установленным в #map_books.

Вы должны использовать:

var selector = "img[usemap=\\" + elemId + "]"; 
1 голос
/ 28 марта 2010

Попробуйте варианты цитирования значения карты использования:

$("img[usemap='#whatever']");
$('img[usemap="#whatever"]');
0 голосов
/ 28 марта 2010
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.

...