-2

この jQuery のコード行を使用していますが、jQuery バージョン 1.7.2 がインストールされていれば問題なく動作します

$("div[id='gallery-'+nr] ul.previews li[id*='preview-']").last().clone().attr('id','preview-extra').appendTo("div[id='gallery-'+nr] ul.previews");

<li>-要素をリストに追加してい<ul>ます 残念ながら、このコード行は jQuery 1.8.3 では機能しません

エラーメッセージは Error: Syntax error, unrecognized expression: div[id='gallery-'+nr] ul.previews Bronbestand: http://www.inwording.nl/supportbeta/wp-includes/js/jquery/jquery.jsです。 ?ver=1.8.3 レゲル:2

したがって、コードの appendTo 部分に関連しています。

に変更できます

.appendTo("div[id='gallery-'+nr] ul[class='previews']");

これによりエラーメッセージは削除されますが、要素はリストに追加されません。

jQuery のバージョンを 1.7.2 に戻すことはできますが、これは WordPress プラグインの一部であり、WordPress 3.5+ には jQuery 1.8.3 が付属しているため、それが正しい方法かどうかはわかりません。他のプラグインは 1.8.3 に依存している可能性があります。1.7.2 に戻すと、他のプラグインが壊れます。

1.7.2 と 1.8.3 の違いを見つけようとしましたが、使用しているコードに関連する情報は見つかりませんでした。

誰もこの問題を見たことがありますか?

4

1 に答える 1

1

nrセレクターを貼り付けるために使用している変数ですか、それとも実際idにあなたのの一部<div>ですか?

つまり、これが HTML コードの内容ですか。

<div id="gallery-+nr">

これは珍しいidことですが、HTML5 では有効です。

それがそうである場合、問題は、引用符の 1 つがこのセレクターの間違った場所にあることです。

div[id='gallery-'+nr]

それは次のようにする必要があります。

div[id='gallery-+nr']

最初のバージョンは無効なセレクターであり、jQuery 1.7.2 でさえ単独で使用すると拒否されます。

> $("div[id='gallery-'+nr]")
  Error: Syntax error, unrecognized expression: [id='gallery-'+nr]

奇妙なことに、1.7.2では、コード内で長いセレクターの一部として使用されている場合、このセレクターを使用できます。

> $("div[id='gallery-'+nr] ul[class='previews']")
  [ ul.previews ]

1.8.3 ではエラー チェックがより厳密になり、この形式のセレクターも拒否されます。しかし、再びこれに変更するとうまくいきます:

$("div[id='gallery-+nr'] ul[class='previews']")

あなたの質問を最初に読んだとき、nr実際にはセレクターで文字列に連結する必要がある変数だと思いましたid。たとえば、次の HTML があるかもしれません。

<div id="gallery-9">
    <ul class="previews">
    </ul>
</div>

現在の値が 9の変数を指定すると、次のようnrに選択できます。<ul>

$( "div[id='gallery-" + nr + "'] ul[class='previews']" )

jQuery 1.7.2 でコードが機能したとおっしゃっていたので、この推測は間違っていたと思います。ただし、念のため、回答のこの部分をここに残して、関連するいくつかの提案を示します。

  1. どちらの方法でも問題なく動作しますが、一重引用符と二重引用符を入れ替えて、JavaScript 文字列を一重引用符で囲み、セレクター内の属性を二重引用符で囲むことをお勧めします。このようにして、セレクターの jQuery ドキュメントに従い、他の引用符で囲まれた文字列とも一致します。

  2. 長い jQuery チェーンは、メソッド呼び出しを 1 行ではなく別の行にフォーマットすると便利です。

これらをすべてまとめると、コードは次のようになります。

$( '#gallery-' + nr + ' ul.previews li[id*="preview-"]' )
    .last()
    .clone()
    .attr( 'id', 'preview-extra' )
    .appendTo( 'div[id="gallery-' + nr + '"] ul.previews' );
于 2013-06-18T13:59:02.847 に答える