jquery插件:我如何运行我的函数以便;这";引用调用插件的元素?

jquery插件:我如何运行我的函数以便;这";引用调用插件的元素?,jquery,jquery-plugins,scope,Jquery,Jquery Plugins,Scope,我希望这是一个相当基本的问题。在下面的javascript中,我希望运行checkval()函数,就好像它是在“this”(在checkval中)所指的插件所调用的元素(好的,是其中一个元素)的范围内执行的一样 所以如果我打电话 $('.has_hidden').conditional(); 然后对所有这些项运行checkval,并将其绑定到on change事件 原因是,我有一个表单,如果你输入了一些东西,它会取消隐藏更多的选项,比如说,如果你输入“australia”,它会取消隐藏一堆其

我希望这是一个相当基本的问题。在下面的javascript中,我希望运行checkval()函数,就好像它是在“this”(在checkval中)所指的插件所调用的元素(好的,是其中一个元素)的范围内执行的一样

所以如果我打电话

$('.has_hidden').conditional(); 
然后对所有这些项运行checkval,并将其绑定到on change事件

原因是,我有一个表单,如果你输入了一些东西,它会取消隐藏更多的选项,比如说,如果你输入“australia”,它会取消隐藏一堆其他元素。现在,当我保存并重新加载表单时,我的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 );

我认为您可以在这种情况下使用jquery代理来解决这个问题:

$this.unbind('change.cns').bind('change.cns', checkval);


我认为您可以在这种情况下使用jquery代理来解决这个问题:

$this.unbind('change.cns').bind('change.cns', checkval);


对不起,我没有正确地解释我的问题,但我真正想要的是

$this.trigger('change.cns');

对不起,我没有正确地解释我的问题,但我真正想要的是

$this.trigger('change.cns');