-1

div の範囲に次の動作を追加しました。

$("div#_FIRST_Menu").click(function () {
  ...
  $("div#_FIRST_Content").toggleClass("property1 property2");
});

$("div#_SECOND_Menu").click(function () {
  ...
  $("div#_SECOND_Content").toggleClass("property1 property2");
});

ソリューションが想定どおりに機能するようになったので、コードの衛生に対する情熱を解き放つことができます。当面の質問、私が実際に見ることができない答えは、{see title here} についてどうすればよいかということです。これに沿って何かを実行したいと思います。

$("div#_" + MAGIC_MARKER + "_Menu").click(function () {
  ...
  $("div#" + MAGIC_MARKER+ "Content").toggleClass("property1 property2");
});

そうすれば、コードを読みやすく保ちながら、コードをきれいに圧縮することができます。提案?

4

4 に答える 4

2

まず第一に、代わりに:

$("div#_FIRST_Menu")

簡単に使用します:

$("#_FIRST_Menu")

より簡単で高速です。

これを行う正しい方法は、選択したいすべての div にクラスを追加することです。たとえば、次の場合:

<div id="_FIRST_Menu" class=menu> ... </div>
<div id="_FIRST_Content" class=content> ... </div>
<div id="_SECOND_Menu" class=menu> ... </div>
<div id="_SECOND_Content" class=content> ... </div>

次に、これを使用できます:

$("div.menu").click(function () {
    ...
});

その関数内で、たとえば次のように使用できます。

    $(this).next().toggleClass("property1 property2");

次の兄弟を取得するか、他の関数を使用して正しい要素を見つけます。HTML を表示していないので、正確にどのように見えるかわかりません。

于 2012-07-27T10:28:03.317 に答える
1

次のようなことを試すことができます:

$.each( ["FIRST","SECOND","THIRD","ETC..."], function(i,MAGIC_MARKER){
    $("div#_" + MAGIC_MARKER + "_Menu").click(function () {
         ...
        $("div#" + MAGIC_MARKER+ "Content").toggleClass("property1 property2");
    });         
});

"#_" + MAGIC_MARKER + "_Menu"または、 idを使用する代わりに、次の"#" + MAGIC_MARKER+ "Content"方法でクラスを使用できます。

$("div.class-for-magic-markers-menu").data('index',function(i){  return i; })
                                     .click(function(){
     $("div.class-for-magic-markers-content").eq($(this).data('index'))
                                             .toggleClass("property1 property2");
});
于 2012-07-27T10:23:44.460 に答える
1

そのユニバーサルコード

$("div").click(function () {
  var id = $(this).attr('id');

  var pairs = id.split('_');

  if ( pairs[2] == 'Menu'){
   var marker = 'div#_'+pairs[1]+'_Content';
   $(marker).toggleClass("property1 property2");      
  }

});
于 2012-07-27T10:39:00.047 に答える
0

これを行う:

$("div#_FIRST_Menu, div #_SECOND_Menu").click(function () {
...
    $("div#_FIRST_Content, div#_SECOND_Content").toggleClass("property1 property2");
});
于 2012-07-27T10:27:17.310 に答える