点击jQuery时摆脱onclick

时间:2010-11-23 01:43:47

标签: javascript jquery

好的,所以我有一些城市的选择标签

  <select onchange="storeCity(this.value, false)" name="search[city]" id="search_city" class="left">
  <option value="">== Select City ==</option>
  <optgroup label="Florida"><option selected="selected" value="ft-myers-sarasota-fl">Ft. Myers / Sarasota </option>
  <option value="jacksonville-fl">Jacksonville</option>
  <option value="miami-fl">Miami / Ft. Lauderdale </option>
  <option value="orlando-fl">Orlando</option>
  <option value="tampa-fl">Tampa</option></optgroup></select>

有些城市现在不可用,所以当点击它们时我需要弹出一个灯箱...我已经使用了这段代码

  $('#search_city').change(function(e) {
   e.preventDefault();
   if ($(this).val() == 'jacksonville-fl' || $(this).val() == 'miami-fl' || $(this).val() == 'tampa-fl' || $(this).val() == 'ft-myers-sarasota-fl') {

}

我遇到的问题是它无论如何转到链接,我需要它摆脱选择的链接或onchange ......有些东西让页面刷新...但我不知道是什么< / p>

4 个答案:

答案 0 :(得分:2)

您可以使用jQuery's .one() function。 E.g。

$('#search_city').one('change', function() {
  /* Your code */
});

change事件只会执行一次。

答案 1 :(得分:2)

storeCity(this.value,false)可能导致刷新

顺便说一下,您可以合并这样的代码:

$('#search_city').change(function(e) {
   storeCity(this.value, false);  
   if (this.value.match(/(jacksonville-fl|miami-fl|tampa-fl|ft-myers-sarasota-fl)/i)) {
      //do some stuff
   }
   e.preventDefault();
});

答案 2 :(得分:1)

你有一个名为

的方法
storeCity(this.value, false) 

关于更改事件,这可能会刷新页面。检查一下。

答案 3 :(得分:0)

还有一个警告 - 我不会在CHANGE事件上使用e.preventDefault()(除非你真的需要),因为它在某些浏览器中会有一些奇怪的行为。通常这只是为了CLICK事件。