Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可重用Jquery函数问题_Jquery_Jquery Ui_Function - Fatal编程技术网

可重用Jquery函数问题

可重用Jquery函数问题,jquery,jquery-ui,function,Jquery,Jquery Ui,Function,在看到一些重复之后,我试图优化我的代码 代码如下: function show($div, $change, $value){ var $container = "#" + $div; var $class = $div + "-" + "hidden"; //alert($class + $container + $change + $value); $($container).addClass($class); $($container).anim

在看到一些重复之后,我试图优化我的代码

代码如下:

function show($div, $change, $value){
    var $container = "#" + $div;
    var $class = $div + "-" + "hidden";

    //alert($class + $container + $change + $value);

    $($container).addClass($class);
    $($container).animate({
        $change: $value
    }, 1000, function(){
            $($container).removeClass($class);
        } 
    );
}

show('header', 'top', '0');
show('nav', 'left', '0');
show('wrapper', 'opacity', '0');

这个区域:$change:$value-就是我在脚本中遇到问题的地方。我能做这个吗?它们应该以字符串的形式出现吗?

我认为您正在尝试以文本的形式动态设置变量名。在JavaScript中,您可以这样做
objectname[“variablename”]=value

function show($div, $change, $value){
    var $container = "#" + $div;
    var $class = $div + "-" + "hidden";

    //alert($class + $container + $change + $value);

    $($container).addClass($class);

    var animation = {}; // create another object
    animation[$change] = $value; // and set its property

    $($container).animate(animation, 1000, function(){
            $($container).removeClass($class);
        } 
    );
}
实际上,您可以在这里做两件事:

  • 传递给animate()的第一个参数的文本可以被拉出
  • $container的jQuery评估可以提取、执行一次并重用,以加快速度
  • 尽管有些人可能会将2称为过早优化的示例,但我认为它使您的代码更具可读性

    function show($div, $change, $value){
    
        var $container = "#" + $div;
        var $class = $div + "-" + "hidden";
    
        //alert($class + $container + $change + $value);
    
        var animation = {}; //declare a literal
        animation[$change] = $value; //create a name-value pair based on args
    
        var jqContainer = $($container);  //extract multiple jQuery evaluations
        jqContainer.addClass($class);
        jqContainer.animate(animation, 1000, function(){
                jqContainer.removeClass($class);
            } 
        );
    }
    

    我认为您正在尝试在文本中动态设置变量名。在JavaScript中,您可以这样做
    objectname[“variablename”]=value

    实际上,您可以在这里做两件事:

  • 传递给animate()的第一个参数的文本可以被拉出
  • $container的jQuery评估可以提取、执行一次并重用,以加快速度
  • 尽管有些人可能会将2称为过早优化的示例,但我认为它使您的代码更具可读性

    function show($div, $change, $value){
    
        var $container = "#" + $div;
        var $class = $div + "-" + "hidden";
    
        //alert($class + $container + $change + $value);
    
        var animation = {}; //declare a literal
        animation[$change] = $value; //create a name-value pair based on args
    
        var jqContainer = $($container);  //extract multiple jQuery evaluations
        jqContainer.addClass($class);
        jqContainer.animate(animation, 1000, function(){
                jqContainer.removeClass($class);
            } 
        );
    }
    

    天啊,我刚刚注意到启动变量的$是多么混乱。刚从菲律宾来,所以有点困在那里。。。我试试看。您能否解释动画对象以及如何设置属性。我不太明白。@user980988:它只是一个普通的javascript对象
    var foo={}天啊,我刚刚注意到启动变量的$有多混乱。刚从菲律宾来,所以有点困在那里。。。我试试看。您能否解释动画对象以及如何设置属性。我不太明白。@user980988:它只是一个普通的javascript对象
    var foo={}