Jquery插件绑定更改事件

时间:2012-07-24 08:38:07

标签: javascript jquery jquery-plugins

我刚创建了一个selectbox插件。这很简单,我正在尝试修改它。

实际上它正在做的是隐藏选择并在ul,li之后添加一些select

说我有这些选项

<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/ 请注意,我不是这方面的专家,只是想成功。

* 编辑:我在每个函数中编写了事件,所以我认为这将是问题所在。我改变它并且运作良好*

3 个答案:

答案 0 :(得分:2)

试试这个......

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

对于旧版本的jQuery使用此

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

这应该按原样运作。

答案 1 :(得分:2)

我认为您使用val()方法设置了值。如果您使用jQuery API / JavaScript更改值,则不会触发更改事件,因此您必须手动触发它,如下所示:

$('#test').change()

$('#test').trigger('change');

我希望能做到这一点!

答案 2 :(得分:1)

您可以依赖原始选择框更改而不是自定义选择框。

当你选择一个li项时,你会更新原始选择框中的相应值,以便更改get被触发..