javascript - jQuery 选择器使用 usemap 属性查找图像时出现问题

标签 javascript jquery jquery-selectors imagemap

我的页面中有一个图像映射:

<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>

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

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);
    }
}

找不到图像。

无法使用 img [usemap=\#map_books] 找到图像

我已经转义了 elemId 因为它 starts with a hash并尝试了选择器的变体。

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

都找不到图像。有什么想法吗?

最佳答案

img[usemap=\#map_books] 之间有一个空格。

这会导致尝试将 img 的子元素与设置为 #map_books 的属性 usemap 进行匹配。

您应该使用:

var selector = "img[usemap=\\" + elemId + "]"; 

关于javascript - jQuery 选择器使用 usemap 属性查找图像时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2533600/

相关文章:

jquery - 如何使用jquery选择div inside div inside div

javascript - 为什么 javascript 在对属性的多重赋值中连接函数名称?

javascript - 当 if 条件包含或 (||) 两个变量时,jQuery if/else 语句

javascript - 如何验证空输入

javascript - 使用 jQuery 更改路径上的 SVG 描边

javascript - 选择 THIS 中的所有输入、标签、选择等 - 每个循环

jquery - 我们如何找到表中被更改的行

javascript - Angular 指令限制 E 破坏代码

javascript - 为什么 Android WebView.loadDataWithBaseUrl() 无法呈现 JavaScript?

javascript - Typescript 函数数组和调用