0

解決策は機能していましたが、今日の午後、サーバーが実際にクラッシュしました。残念ながら、作業コードをチェックインしませんでした。その日の早い段階で StackOverflow の助けを借りてコードを機能させ、以前の投稿の回答を使用しましたが、機能しなくなりました。=(

いずれかの方法。私がやろうとしていたのは、テキストが含まれているラベルを見つけて、その要素に ID を割り当てることでした。

HTMLは次のとおりです。

<DT>change me dynamically</DT>
<DD>
<input class=" text" type="text"  name="contact_details"  value=""  id="contact_details" >
<P CLASS="descr"></P>
</DD>

クエリを介してこのコードに対してやりたいことは、次のようにすることです。

<DT id="contactTypeLabel">Phone Number</DT>
<DD>
<input class=" text" type="text"  name="contact_details"  value=""  id="contact_details" >
<P CLASS="descr"></P>
</DD>

以前使用していたコードは次のとおりです。

$('body >DT:contains("change me dynamically")').contents().each(function () {
    var exp = /change me dynamically/;
    alert("nodevalue is:" + this.nodeValue);       
    if (this.nodeValue && exp.test(this.nodeValue)) {
        var $parent = $(this).parent().attr('id', 'contactTypeLabel');
        $parent.text(function(_, text){
           return  text.replace(exp, "Phone Number");
        }); 
    }
}); 

アラートは発生しません。これを行って検索を広げると:

$('body :contains("change me dynamically")').contents().each(function () {

その後、多数の警告ステートメントが表示されます。しかし、実際には、「動的に変更してください」というテキストを含む要素は 1 つしかありません。

以前私を助けてくれた人たちに申し訳ありません。以前のメモをすべて確認しようとしましたが、バグが見つからないようです。大変な一日だったし、私はかなり嫌がらせを受けているので、単純なことを見落としているのかもしれません。

ありがとう。

4

1 に答える 1

1

説明

DTDDタグは通常、タグ内にネストされDLます。セレクター:

$('body >DT:contains("change me dynamically")').contents().each(function () {

DTノードの直接の子孫であるノードのみを検索しbody、別のノード内にあるものはスキップします。ただし、次のスニペットは、そのテキストを含むすべてのノードに範囲を広げます。

$('body :contains("change me dynamically")').contents().each(function () {

ソリューション

おそらく探しているのは、そのテキストを含むDT内のノードを探すものです:DL

$('body DL>DT:contains("change me dynamically")').contents().each(function () {

または単にDTテキストを含む任意のノード:

$('body DT:contains("change me dynamically")').contents().each(function () {

情報

詳細については、子セレクターに関する記事を参照してください。

于 2013-07-02T23:59:40.117 に答える