2012-07-24 106 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