2013-05-02 28 views
1

比方说,我有给它返回类似扩展PHP数组参数的函数的功能

//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();' 
     . ' });' ; 

回答

2

使用一个类来避免所有的复制代码。那么你可以这样做:

$(".fadeThis").on('click', function(){ 

    // the ID of the element is available as this.id 
    $(this).fadeToggle();  

    // $(this).children() to get the children... 

}); 
+0

请问你能举一个在代码上使用它的例子吗? – cMinor 2013-05-02 16:05:53

+0

当然,但HTML标记是怎么样的?并指出你想'fadeToggle'的元素 – 2013-05-02 16:07:03

+0

我有像http://jsfiddle.net/davidThomas/UpX3L/1/ – cMinor 2013-05-02 16:45:10

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 .= '});'; 
} 
2

试试这个:

//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 .= ' ; ';