这是IE8还是jQuery的错误?

时间:2009-12-09 08:18:28

标签: jquery javascript-events internet-explorer-8 contextmenu option

<option>不响应IE8中的click / contextmenu事件?

以下是在本地验证它的所有代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>
 <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
 <meta http-equiv="Content-Language" content="en-us" />
 <title>International Properties</title>
 <script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function(){
 $('option').bind('click contextmenu',function(){
  alert(1);
 });
});
</script>
<select size="2">
<option class="showme" id="article1">test1</option>
<option class="showme" id="article2">test2</option>
</select>
</body>
</html>

修改

我提供的代码是为了澄清我遇到的问题。

最终我会做类似的事情:

$('option').contextMenu('myMenu1'...

2 个答案:

答案 0 :(得分:1)

将处理程序绑定到select,使用Event.target获取用户单击的选项。这对我有用:

$(function(){
 $('select').bind('click contextmenu',function(ev){
  console.log($(ev.target).val());
  return false;
 });
});

修改

我使用以下代码在ie6,ie7和ie http://ipinfo.info/netrenderer/index.php上测试了它。选择最后一个选项,显示“click()on:article2”。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>
 <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
 <meta http-equiv="Content-Language" content="en-us" />
 <title>option.click</title>
 <script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function(){
 $('select').bind('click', function (ev)
 {
  ev.target.selected = true;
  $('body').append('click() on: ' + ev.target.id);
 });
 $('option:last').click();
});
</script>
<select size="2">
<option class="showme" id="article1">test1</option>
<option class="showme" id="article2">test2</option>
</select>
</body>
</html>

答案 1 :(得分:0)

我认为您需要将事件绑定到选择而不是选项:

<!DOCTYPE html>
<html>
  <head>
   <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
   <meta http-equiv="Content-Language" content="en-us" />
   <title>International Properties</title>
   <script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js"></script>
  </head>
  <body>
    <script type="text/javascript">
      $(function(){
       $("select").bind("click contextmenu", function(){
        alert(1);
       });
      });
    </script>
    <select size="2">
      <option value="article1">test1</option>
      <option value="article2">test2</option>
    </select>
  </body>
</html>