2

編集:情報が1つ不足しています-同じクラスのdivが他にもあるため、クラスセレクターを使用できません。すでに考えていましたが、それについて言及するのを忘れていました。私の投稿がなぜ反対票を投じられたのかわかりませんが、多くの情報を提供し、誠実な努力を払い、コード例で冗長にしようとしたことを考えると、それは非常にばかげているようです. このフォーラムの人々は時々ばかげています。

ID を持たない div の ID を設定しようとしていますが、ページの生成時に ID を指定する方法がありません。jquery (.each、.contains、.find、.filter など) を使用してみましたが、うまくいかないようです。多くの人がこの質問をしたことは知っていますが、どの回答も私には意味がありませんでした.

div のテキスト (html?) を設定することはできますが、他には何もできません。最終的には次のようになります。

<div class="dhxform_note" style="width: 300px;">Remaining letters: 500</div>

テキストを更新することで入力できる文字数をユーザーに示すことができるように、div オブジェクトへのハンドルが必要です。

これを使用して:

$("div")

ページ上のすべての div のリストを返します。リストにターゲット div が表示されますが、jquery で 1 つのオブジェクトを返すことができません。

私はそれが次のようなものでもできることを知っています:

var divs = document.getElementsByTagName("div");
for(var i = 0; i < divs.length; i++) {
    if( /^Remaining letters/.test(divs[i].innerText) )
        divs[i].id = "kudosMsgNote"
    }
}

しかし、jquery を使用したすっきりとしたソリューションでこれを完成させたいと考えていました。また、美学に耐えられないjqueryでそれを行う方法を知りたいだけです。

4

6 に答える 6

3

<div>テキストで をターゲットにしているようです。:containsセレクターを使用してみてください:

$("div").filter(':contains("Remaining letters")').first().attr("id", "kudosMsgNote");

これは、複数の要素に「残りの文字」というテキストが含まれている場合に備えて、複数の要素に.first()同じ値を設定しないようにするためです。id

:containsセレクターのドキュメントは次のとおりです: http://api.jquery.com/contains-selector/

:contains!を使用する場合、探しているテキストは大文字と小文字が区別されることに注意してください。

于 2013-04-05T20:21:31.910 に答える
3

クラス セレクターを使用します。

var theDivViaTheClass = $(".dhxform_note");

クラスセレクター(“.class”)

説明: 指定されたクラスを持つすべての要素を選択します。

追加されたバージョン: 1.0 jQuery( ".class" )

  • class: 検索するクラス。要素は複数のクラスを持つことができます。それらの 1 つだけが一致する必要があります。

クラス セレクターの場合、ブラウザーがサポートしている場合、jQuery は JavaScript のネイティブな getElementsByClassName() 関数を使用します。

于 2013-04-05T20:16:25.180 に答える
2

その div はクラスを持つ唯一のものdhxform_noteですか? その場合は、クラス セレクターを使用できます。

$('.dhxform_note').html();
于 2013-04-05T20:16:16.960 に答える
1

jQuery を使用すると、任意の CSS セレクターを指定して div を取得できます。

$(".dhxform_note").attr("id", "kudosMsgNote");

この要素も取得します。

内側のテキストを選択するのは少し危険な場合があるため、その HTML 要素のレンダリングを制御できる場合は、代わりに次のようにレンダリングすることをお勧めします。

<div name="remainingLetters" class="dhxform_note" style="width: 300px">Remaining Letters:  500</div>

そして、次のように取得します。

$("[name=remainingLetters]").attr("id", "kudosMsgNote");

ただし、内部テキストに基づいてこれを選択する必要がある可能性があります。その場合、次のことを行う必要があります。

$("div").each(function() {
    if ( /^Remaining letters/.test($(this).html()) ) {
        $(this).attr("id", "kudosMsgNote");
    }
});
于 2013-04-05T20:23:50.000 に答える
0

divclassに複数の がdhxform_noteあり、 said の正確な場所がわからない場合div:

$("div.dhxform_note").each(function(){
    var text = $(this).text();
    if(/^Remaining letters/.test(text)){
        $(this).attr("id", "kudosMsgNote");
    }
});

ただし、div が常に 2 番目に出現することがわかっている場合dhxform_noteは、次のことができます。

$("div.dhxform_note").get(1).id = "kudosMsgNote";

またはcontains検索を実行します。

$("div.dhxform_note:contains('Remaining letters')").first().attr("id", "kudosMsgNote");

于 2013-04-05T20:20:57.760 に答える