【发布时间】:2010-03-29 00:36:16
【问题描述】:
我的页面中有一张图片地图:
<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 + "]")
找不到图片。有什么想法吗?
【问题讨论】:
-
另外,避免比较
tagName区分大小写,因为不能保证浏览器会将其大写。attr('tagname'也是有问题的,因为tagName不是 HTML 属性。它恰好起作用,因为 jQuery 将大多数属性访问重定向到属性访问,但我认为$(elemId)[0].tagName.toLowerCase()==='map'是一个更好的测试。 -
$(elemId)是一个集合,将始终拥有$(elemId][0]?
标签: javascript jquery jquery-selectors imagemap