我希望相当基本的问题。在下面的javascript中,我想运行checkval()函数,好像它是在“this”(在checkval中)引用调用插件的元素的范围内执行的(好吧,其中一个元素) )。
所以,如果我打电话
$('.has_hidden').conditional();
然后,这将对所有这些项运行checkval,并将其绑定到on change事件。
原因是,我有一个表格,如果你输入某些东西,它将取消隐藏更多选项,比如你输入“澳大利亚”,它将取消隐藏一堆其他元素。现在,当我保存并重新加载该表单时,我的php脚本会重新填充数据,但其他元素仍然隐藏。我只需要运行检查val,这样它们就会被隐藏起来。明白马
/**
* This class will show or hide a bunch of elements (A,B,C) based on the value in element (E, this).
* To use it, take the name of the form element (E, this) and apply it as a class to A,B,C
* Then add a display none to A,B,C (add class off)
* Set the "rel" tag on
* Finally, run $(E).conditional();
*/
(function( $ ){
$.fn.conditional = function() {
return this.each(function(){
var $this = $(this);
$this.unbind('change.cns').bind('change.cns', checkval);
});
function checkval(){
var regex = $(this).attr('rel');
var class_name =$(this).attr('name');
if($(this).val().search(regex)>-1)
$('.'+class_name).show();
else
$('.'+class_name).hide();
}
};
})( jQuery );
答案 0 :(得分:1)
我认为在这种情况下你可以使用jquery代理来解决这个问题:
$this.unbind('change.cns').bind('change.cns', checkval);
要
$this.unbind('change.cns').bind('change.cns', $.proxy( checkval, $this ));
答案 1 :(得分:0)
抱歉,我没有正确解释我的问题,但我实际上正在寻找的是
$this.trigger('change.cns');