2010-11-23 29 views
0

行,所以我有城市的一些选择标签摆脱的onclick的时候使用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') { 

}

我的问题是,它进入链接反正,我需要它来摆脱对选择...一些链接或平变化的工作是获取页面刷新......但我不知道是什么

+0

是该方法令人耳目一新页?你是否检查 – kobe 2010-11-23 01:50:04

回答

2

storeCity(THIS.VALUE,FALSE)可能造成的刷新

BTW,您可以合并这样的代码:

$('#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(); 
}); 
+0

+1,用于暗示以某种方式合并代码,即使它不是最好的方式。我怀疑`e.preventDefault();`是必要的。 – PleaseStand 2010-11-23 02:04:12

1

您有一个名为

storeCity(this.value, false) 

上改变事件的方法,这可能是刷新页面。检查出。

+0

@mat检查你是否在页面的任何地方使用location.href。 – kobe 2010-11-23 01:52:35

0

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

2

您可以使用jQuery's .one() function。例如。

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

change事件将只执行一次。