1

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

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

3 回答 3

2

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

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

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

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

});
于 2013-05-02T16:03:58.073 回答
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 .= ' ; ';
于 2013-05-02T15:59:30.620 回答
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 .= '});';
}
于 2013-05-02T15:56:41.520 回答