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

次のような 1 つのキーに複数の値がある場合、どうすればこのケースを達成できますか。

$("#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
$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 に答える
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 に答える