2012-07-24 112 views
1

我剛創建了一個selectbox plugin.It非常簡單,我試圖修改它。jquery插件綁定更改事件

其實它在做的是隱藏選擇並在select之後添加一些ul,li

說,我可

<select id="test"> 
<option>1</option> 
<option>2</option> 
</select> 

現在,這些選項我可以做

$("#test").selectBox(); //to make it my selectBox 

我有setter和getter選項

$("#test").selectBox("changeValue",["changed option",index]); 

在我的插件,我使用的方法。 。

var methods = { 

init :function(options){}, 

changeValue:function(value){ 

//some code to change the value ... 

} 

}; 

我可以改變這個值,但是我怎樣才能捕捉到change事件?

change意味着,在選擇或改變ul,li

我真正需要的是

$("#test").selectBox(); //initialise 

$("#test").change(function(){ //attach change event 

//my codes..... 

}); 

$("#test").selectBox({ 
onChange : function(){ 

console.log("changed...."); 

} 


}); 

希望這個問題是清楚了。 謝謝。

編輯:這裏是FIDDLE鏈接http://jsfiddle.net/jitheshkt/rBjqq/3/ 請注意,我不是這方面的專家,只是試圖做到這一點。

* 編輯:我在每個函數裏寫了一些事件,所以我認爲那會是問題。我改變了它,並運行良好*

+1

看看['.trigger()'](http://api.jquery.com/trigger/)。您可以在'changeValue'方法中的匹配元素上觸發一個事件,並在該元素上偵聽它。 – 2012-07-24 08:47:19

+0

@JamesAllardice謝謝..看起來很有前途的......但是請你幫助我多一點嗎? – Red 2012-07-24 08:57:57

+0

你能否顯示你的初始化代碼正在做什麼,以原始選擇元素。 – 2012-07-24 09:00:13

回答

1

您可以依賴原來的選擇框更改,而不是您的自定義選擇框。

當你選擇一個項目裏,您更新原來的選擇框,這樣的變化獲取的燃煤相應的值..

+0

是的,當我選擇一個李項目,它會改變選定的項目,但事件沒有被解僱... – Red 2012-07-24 08:50:04

+0

我更新了問題與小提琴鏈接 – Red 2012-07-24 09:34:08

2

嘗試......

$("#test").on('change',function(){ 
    // Write your code here. 
}); 

的jQuery使用此

的舊版本
$("#test").change(function() { 
    console.log('HI'); 
}); 

這應該照原樣工作。

+0

對不起...它不工作......也沒有必要使用'on' – Red 2012-07-24 08:56:43

+0

您正在使用哪個版本的jQuery?如果您使用的是舊版本,請進行相應的更改。我將編輯我的代碼。同樣的事情爲我工作。我也使用相同的插件。 – Vins 2012-07-24 08:59:34

+0

是的,你是對的..它會工作..但在這裏它不工作..這是因爲事件沒有被解僱.. – Red 2012-07-24 09:05:01

2

我想你正在使用val()方法設置值。如果你正在使用jQuery API/JavaScript的變化值的變化事件不會觸發,所以你必須手動觸發,就像這樣:

$('#test').change() 

我希望會做招數!

+0

是的,它會工作...但它會改變整個選擇框...請看小提琴.. – Red 2012-07-24 09:39:11