views:

78

answers:

3

Hi,
I'm trying to implement a JQuery script to process some areas inside an image map. I'm using $('area[shape="poly"]') as a selector to obtain the areas I'm interested in. It is working fine in IE8 and Firefox, but it is not selecting the elements in IE6 or IE7.
This is a test page that shows this problem. I don't know if this is a JQuery bug or I am doing something wrong.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
 var areas = $('area[shape="poly"]');
 alert('areas: ' + areas.length);
});
//]]>
</script>
 <title>Test</title>
</head>
<body>
<img id="img1" src="nothing.gif" style="width:300px; height:300px; border: 2px solid black" usemap="#map1"/>
<map id="map1">
<area shape="rect" title="rectArea" coords="126,112,231,217" alt=""/>
<area shape="poly" title="polyArea1" coords="274,72,262,70,251,68,240,67,228,66,217,67,206,68,194,70,183,72,181,63,192,60,204,58,216,57,228,56,240,57,252,58,264,60,276,63" alt=""/>
<area shape="poly" title="polyArea2" coords="241,194,235,193,228,193,222,193,216,194,196,119,204,117,212,116,220,115,228,115,237,115,245,116,253,117,261,119" alt=""/>
</map>
</body>
</html>

This is showing 2 in IE8 and Firefox and 0 in IE6-7
Thanks, Guillermo

+3  A: 

It appears to work if you uppercase the value:

var areas = $('area[shape="POLY"]');
Álvaro G. Vicario
+1 You're not wrong - works here too.
Skilldrick
It's a shame jQuery doesn't abstract that away - I'd call that a bug.
Skilldrick
Yes, that did the trick. Thanks!!
Guillermo Vasconcelos
Yes, definitely a bug.
Ain
A: 

I'm having the same problem with IE6. You could cheat and change the selector to:

[title*="poly"]

(*= means contains)

Skilldrick
A: 

Try this: $("area[shape=poly]")

I have this code selecting correctly in IE6

    <script>
      $(document).ready(function() {
        $("#button").click(function(){
          $("div[shape=poly]").remove();
        });
      });          
    </script>

<button id="button">Button</button>
<div shape="poly">p</div>
<div shape="poly">p</div>
<div shape="s">s</div>
<div shape="poly">p</div>
<div shape="poly">p</div>
Cody