.change()不工作在ie和更改为.click()相同的问题

时间:2012-06-03 08:05:29

标签: javascript jquery

我的问题:此代码适用于firefox chrome和safari,但不适用于IE 8.我有.change但我发现它不起作用,所以我做.click并再次尝试在所有浏览器中,所有浏览器都在工作,尝试仍然无法正常工作。 anythingSlider是一个jquery库我正在使用,我知道这不是问题(反向工作就像选择下拉菜单上的项目并移动到那张幻灯片,包括ie。谢谢。

我的代码:

 $(document).ready(function() {
 $('#skillslist').click(function()
  {var str = $(this).attr('value');
  var pattern = /[0-9]+/g;
  var matches = str.match(pattern);
 var myInteger = parseInt(matches);
 $('#slider').anythingSlider(myInteger);


  });


    });
</script>

 <select name='myList'  id='skillslist'>
 <option>Subscription Days Remaining: <? echo $days ?></option>
 <option id='skill1'>Skill 1: Hand Washing</option>
 <option id='skill2'>Skill 2: Abdominal Thrust on Conscious Resident</option>
 <option id='skill3'>Skill 3: Ambulation using a Gait Belt</option>
 </select>

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

$('#skillslist').on('change', function(){  // change instead of click
  var str = this.value;
  var pattern = /[0-9]+/g;
  var matches = str.match(pattern);
  var myInteger = parseInt(matches);
  $('#slider').anythingSlider(myInteger);


  });
});

不确定,如果您在页面加载后选择附加到dom,那么您应该选择

$('body').on('change', '#skillslist', function(){  // change instead of click
  var str = this.value;
  var pattern = /[0-9]+/g;
  var matches = str.match(pattern);
  var myInteger = parseInt(matches);
  $('#slider').anythingSlider(myInteger);


  });
});

注意 body可以替换为选择框的容器。

答案 1 :(得分:2)

$('#skillslist').change(function() {
    var str = $(this).val();
    // ...
});

我总是尽量避免使用$(this).attr('value')this.value,因为应使用this.options[this.selectedIndex]来查询选择框值...这是.val()为您所做的。

在您说“它不起作用”之前,请先说明哪些内容不起作用,并确保通过alert() myInteger值来消除其他因素。