【问题标题】:extend functionality of php array parameter function [closed]扩展php数组参数函数的功能[关闭]
【发布时间】:2013-04-26 21:12:30
【问题描述】:

假设我有一个给定数组的函数,它返回一段代码,例如

//the array
$arr = array("EAL"   => "Eal",
         "CAZO"  => "Cazo",
         "COS"   => "Cos"           
        );

$result = '';
foreach ($arr as $key => $value){
    $result .= ' $("'.$key.'").click(function() { '
        . '        $("'.$value.'").fadeToggle();'
        . '  });'  
}
$result .= ' ; ';

看起来像

$result=' $("#EAL").click(function() { '
      . '   $("#Eal").fadeToggle();'
      . '    });'
      . ' $("#CAZO").click(function() { '
      . '   $("#Cazo").fadeToggle();'
      . '    });'
      . ' $("#COS").click(function() { '
      . '   $("#Cos").fadeToggle();'
      . '    });'  ;

现在,当我对一个键有多个值时,我该如何完成这种情况,例如:

$("#CAZO").click(function() { 
   $("#Cazo_x").fadeToggle();
   $("#Cazo_y").fadeToggle();
   $("#Cazo_z").fadeToggle();
});

所以最终结果是

$result=' $("#EAL").click(function() { '
      . '   $("#Eal").fadeToggle();'
      . '    });'
      . ' $("#CAZO").click(function() { '
      . '   $("#Cazo_x").fadeToggle();'
      . '   $("#Cazo_y").fadeToggle();'
      . '   $("#Cazo_z").fadeToggle();'
      . '    });'
      . ' $("#COS").click(function() { '
      . '   $("#Cos").fadeToggle();'
      . '    });'  ;

【问题讨论】:

    标签: php jquery arrays string


    【解决方案1】:

    使用类来避免所有重复的代码。然后你可以这样做:

    $(".fadeThis").on('click', function(){
    
      // the ID of the element is available as this.id
      $(this).fadeToggle();      
    
      // $(this).children() to get the children...
    
    });
    

    【讨论】:

    • 你能举一个在代码上使用它的例子吗?
    • 当然可以,但是 HTML 标记看起来如何?并将你想要的元素指向fadeToggle
    • 我有像jsfiddle.net/davidThomas/UpX3L/1这样的输入字段
    • 您的回答非常好,但是如果我单击一个链接,如何显示/隐藏 2 个或更多 div?
    【解决方案2】:
    $arr = [
        'EAL'  => 'Eal',
        'CAZO' => [
            'Cazo_x',
            'Cazo_y',
            'Cazo_z'
        ],
        'COS'  => 'Cos'           
    ];
    
    $result = '';
    foreach($arr as $key => $value) {
        $result .= '$("'.$key.'").click(function() {';
        if(!is_array($value)) { $value = [$value]; }
        foreach($value as $v) {
            $result .= '$("'.$v.'").fadeToggle();'
        }
        $result .= '});';
    }
    

    【讨论】:

      【解决方案3】:

      试试这个:

      //the array
      $arr = array("EAL"   => "Eal",
           "CAZO"  => "Cazo",
           "COS"   => "Cos","key2" =>array("value1","value2")          
          );
      
      $result = '';
      foreach ($arr as $key => $value){
      $result .= ' $("'.$key.'").click(function() { ';
          if( is_array( $value )){
              foreach( $value as $val )
              {
                 $result .='        $("'.$val.'").fadeToggle();'
              }
          }else{
            $result .= '        $("'.$value.'").fadeToggle();'
      
          }
          $result .= '  });'  
      }
      $result .= ' ; ';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-05
        • 1970-01-01
        • 1970-01-01
        • 2014-10-24
        • 1970-01-01
        • 2021-02-21
        • 1970-01-01
        相关资源
        最近更新 更多