0

<li>ページの特定の末尾に div を追加したい。マークアップの構造を変更することはできないので、持っている情報からドリルインする必要があります。まずspan.ruUploadSuccess、配列内のテキストを含むものを見つけますfileInfo[0]
それから 2 つの親を上に移動し、これ<li>に追加する必要があります。ただし、div が既に存在する場合はこのデータを追加したくないので、その行に既にこの div があるかどうかを確認し ( を使用.has())、 を使用して結果からそれらを除外し.not()ます。

これは、IE7 を除くすべてのブラウザでうまく機能します。IE7 では、追加したい適切な行を見つけますが、既にこの div がある行を除外していません。これにより、同じ div が 2 回 (またはそれ以上) 追加されます。

この特定の要素にアクセスする簡単な方法はありますか? これが IE7 で異なって機能する理由はありますか?

<li>追加する要素を見つけるための私のコード:

var row = $("span.ruUploadSuccess:contains('" + fileInfo[0] + "')").parent().parent();
$(row).not($(row).has("div.contactUsAttachmentFileSize")).append(label);

これは、私が作業しようとしている構造を示すサンプル マークアップです。

<ul id="content_0_leftcolumn_0_Attachments_RadAsyncUploadListContainer" class="ruInputs">
  <li>
    <span class="ruFileWrap ruStyled">
      <span class="ruUploadProgress ruUploadSuccess">test file (above 5mb).zip</span>
    </span>
    <input class="ruButton ruRemove" type="button" name="RowRemove" value="Remove" tabindex="-1">
    ===> DIV GOES HERE <===
  </li>
</ul>
4

2 に答える 2

0

filter() を使用するのはどうですか。not()/.has() よりもうまくいくようです

$(row).filter(function(){
    return !$(this).find('div.contactUsAttachmentFileSize').length;
}).append(label);

いいえ、フィドルを持っています http://jsfiddle.net/wirey00/vxmGw/

filter() フィドル http://jsfiddle.net/wirey00/B6v3A/

于 2012-08-09T20:49:33.607 に答える
0

あなたが実際にやろうとしていることをより表現できるように、私はそれを再コーディングしたいと思います。あなたが持っているものはうまくいくはずですが、理解するのは難しく、より慎重なアプローチは、おそらく古いIEで問題を引き起こしている微妙なjqueryのものを回避します. また、あなたの意図がより明確になります。

div が既に存在するかどうかをテストし、存在しない場合は追加するだけです。なので、条件付きで書きます。

http://jsfiddle.net/jamietre/ECVny/

var row = $("span.ruUploadSuccess:contains('test file')").parent().parent();

if (!row.find("div.contactUsAttachmentFileSize").length) {
    row.append(label);
}
于 2012-08-09T20:50:17.297 に答える