1

私は本当にこれを釘付けにする必要があります.私はあまりにも長い間それを続けてきました.

各要素のinnerTextを取得し<a>てli_text変数に入れる必要があると思います。

以下は、このテーマに「提供された」コードです。テーマはサブメニューをサポートしていません。しかし、これが必要なので、サブメニューで機能させようとしています。

次の js スクリプトは、部分的に HTML を「構築」しています。

var$ $main_menu = $('#main_menu');

  $main_menu.find('li').each( function(){
    var $this_li = $(this),
li_text = $this_li.find('a').html();

$this_li.find('a').html( '<span class="main_text">' + li_text + '</span>' + '<span class="menu_slide">' + li_text + '</span>' )
    } );

次のコードのようです: li_text = $this_li.find('a').html(); 上から。それは微調整する必要があります....上の最も近い親から「a」を取得するためにその行が必要です.....これは意味がありますか?

これと一緒に (header.php から)

$primaryNav = '';
  if (function_exists('wp_nav_menu')) {
    $primaryNav = wp_nav_menu( array( 'theme_location' => 'primary-menu', 'container' => '',  'fallback_cb' => '', 'menu_class' => $menuClass, 'menu_id' => $menuID, 'echo' => false )   );}

ナビゲーション HTML は次のようになります。

<nav id="main_menu" style="opacity: 1; display: none;">
  <ul id="menu-dk-fl370" class="clearfix">
    <li id="menu-item-23" class="mcdu_left menu-item menu-item-type-post_type menu-item-object-page menu-item-23 even">
    <li id="menu-item-48" class="mcdu_right menu-item menu-item-type-post_type menu-item-object-page menu-item-48 odd">
    <li id="menu-item-27" class="nolink menu-item menu-item-type-custom menu-item-object-custom menu-item-27 even">
    <li id="menu-item-55" class="has_sub mcdu_right menu-item menu-item-type-post_type menu-item-object-page menu-item-55 odd">
      <a href="http://fl370.com/?page_id=53">
        <span class="main_text">MEDIA</span>
        <span class="menu_slide">MEDIA</span>
      </a>
        <ul id="sub-menu" class="sub-menu" style="display: none;">
          ***<li id="menu-item-67" class="mcdu_sub mcdu_right menu-item menu-item-type-post_type menu-item-object-page menu-item-67">
            <a href="http://fl370.com/?page_id=60">
              <span class="main_text">
                <span class="main_text">MEDIA</span>
                <span class="menu_slide">MEDIA</span>
              </span>
              <span class="menu_slide">
                <span class="main_text">MEDIA</span>
                <span class="menu_slide">MEDIA</span>
              </span>
            </a>
         </li>***
         <li id="menu-item-66" class="mcdu_sub mcdu_right menu-item menu-item-type-post_type menu-item-object-page menu-item-66">
      </ul>
   </li>
  </ul>
</nav>

等々...

**

これは私が取得しようとしているものです....

              <span class="main_text">
                <span class="main_text">BILLEDER</span>
                <span class="menu_slide">BILLEDER</span>
              </span>
              <span class="menu_slide">
                <span class="main_text">VIDEO</span>
                <span class="menu_slide">VIDEO</span>
              </span>

これらの「名前」は、js の li_text 関数を介して挿入されます。しかし、名前の最初のliだけを挿入しているようです。

'own'/parent li a からページ名を取得するスクリプトが必要です。そして、まだjsスクリプトを適用します....

**

誰かが助けてくれることを願っています....

ありがとう

4

2 に答える 2

0

個人的にはhtml()、HTML のスニペットを入力するために使用するのは嫌いです。むしろ、要素を作成して DOM に追加する方が好きです。自分がしていることをよりコントロールし、理解できるようになります。

$("#main_menu li").each( 
    function(i, element)
    {
        $("<a />").attr("href", "some link here").appendTo(element);
        $("<span />").addClass("class name here").text("some text here").appendTo(element);
        // ...etc.
    }
);

(最終的にどのようなコードを期待しているかについてもう少し投稿していただければ、ここでの意味をより具体的に説明できます...)

それはさておき、HTML の形式が正しくないため、追加の問題が発生している可能性があります。タグを 2 回閉じますが、<a>タグを閉じません<li><span>また、山かっこの 1 つが逆になっているため ( ) 、タグを閉じません>/span>。jQuery は、適切に処理されていない場合、HTML 要素を分析するのに苦労します。

于 2012-10-02T18:15:07.610 に答える
0

コード構造がそのまま残っている場合は、これを行うことでそのコンテンツを取得できます。クラス名やIDを使用できないと仮定しています

$main_menu.find('> ul > ul').html();

また

$('#main_menu > ul > ul').html();

これにより、ul 自体ではなく ul 内のすべてが返されるため、ul を作成して追加する必要があります。

var container_ul = '<ul class="' + $main_menu.find('> ul > ul').attr("class") + '" id="' + $main_menu.find('> ul > ul').attr("id") + '">';

ループの外側で container_ul を定義するため、最終的には次のようになります。

var $main_menu = $('#main_menu');
var container_ul = '';
var final_content = '';

$main_menu.find('> ul > ul').each( function(){
    container_ul = '<ul class="' + $(this).attr("class") + '" id="' + $(this).attr("id") + '">';
    li_text = $(this).html();
    final_content += container_ul + li_text + '</ul>';
});

そのため、final_content には必要なコード ブロックが含まれます。ここから、そのコード ブロックをどうするかを決定できます。おそらくコンテンツを取得するための最も美しい方法ではありませんが、うまくいくはずです

于 2012-10-02T18:40:37.843 に答える