2011-11-15 44 views
2

我已綁定一個簡單的處理程序,以改變一個select元素的事件,如下Jquery的變化不會對射擊選擇元素

$("#ddlPincode").change(function() { 
     alert("Hello"); 
     UpdateMapFromPincode(); 
    }); 

但是,當我改變pin碼下拉列表中,沒有任何反應。 Firebug也沒有錯誤。

當不同的select元素(ddlCity)發生更改時,ddlPincode爲空,元素通過ajax調用添加。上述綁定事件處理程序的代碼最初位於存在其他jquery代碼的$(function(){})中。然後,在將select與服務器的resultSet綁定後,我將它放入ajax調用的成功中。這也不會做任何事情

+2

它似乎是正確的,我認爲你應該分享你的HTML。 – erimerturk

+0

嘗試'$(「#ddlPincode」)。bind('change',function(){'是不同的'change'(不好))檢查http://elijahmanor.com/differences-between-jquery-bind-vs -live-VS-代表-VS-上/ – KingRider

回答

0

你的代碼應該完美地工作。如果你重新創建這個下拉控件,唯一的迴應。這裏是我的測試代碼:

HTML

<input type="button" id="btn" value="Fill" /> 
<select id="ddl"></select> 

JS

$(function() { 
    $('#btn').click(function() { 
     for (var index = 0; index < 10; index++) { 
      $('#ddl').append('<option>' + index + '</option>'); 
     } 
    }); 

    $('#ddl').change(function() { 
     alert('changed'); 
    }); 
}); 

代碼:http://jsfiddle.net/qGg87/2/

0

我想你應該張貼您的整個HTML或小提琴jQuery的,因爲我已經試過這個,它適用於我,你的代碼看起來沒問題(這裏不需要使用live()delegate()):

http://jsfiddle.net/qYqG8/

0

我想你使用的是一些其他jQuery插件,以增強選擇框即像jqtranform,如果我們使用這樣的插件,然後jQuery的改變事件將無法正常工作,因爲它創建了另一個包裝的漂亮的UI 。

因此,檢查這個建議...

1

注意select元素只有火onchange當字段失去焦點。要始終觸發更改事件有選擇觸發的keyup事件change事件:

$("select").keyup(function() { $(this).trigger('change'); }); 

這將確保選擇始終觸發更改事件。請注意,如果值實際上沒有改變,因爲keyup沒有改變選擇,事件仍然會觸發。