0

次のように、選択したチェックボックスのテキストを取得しようとしています:

HTML:

<label class="checkbox">        
    <input type="checkbox" name="priority" value="2" checked="checked">2 - Critical
</label>
<label class="checkbox">        
    <input type="checkbox" name="priority" value="3">3 - Important
</label>

jquery:

$('#priorityContents input:checkbox:checked').each(function() {
    if(priorityText.length > 0) {
        priorityText = priorityText + "|";
    }
    priorityText = priorityText + $(this).text();
});

alert(priorityText);

私は見ることを期待します:

2 - Critical

コンソールにエラーは表示されません。私は何が欠けていますか?

4

8 に答える 8

2

あなたが試すことができます:

<input id="cb" type="checkbox" name="priority" value="2" checked="checked">
<label for='cb' class="checkbox"> 2 - Critical</label>

$('#priorityContents input[type="checkbox"]:checked').each(function() {
    var txt = $(this).next('label').text();
});

:checkboxセレクターは非推奨input[type="checkbox"]であり、代わりに使用できることに注意してください。

于 2012-07-26T17:57:00.787 に答える
1

あなたが投稿したコードに基づいて、なぜその結果が表示されると思いますか? そのコードのどの時点でも、テキストを取得しようとしたことはありません。私はお勧めします:

$('#priorityContents input:checkbox:checked').each(function() {
    var next = this.nextSibling,
        text = next.nodeType == 3 ? next.nodeValue : '';
    console.log(text);
});

JS フィドルのデモ

これは、指定された の要素内のチェックされた各チェックボックスを反復処理しid、現在のノードの次の兄弟 (jQuery オブジェクトではなく、単純な DOM ノード) を調べ、そのノードがtextNode(nodeType等しいノード) である場合3nodeValue(そのノードのテキスト コンテンツ) を変数に追加します。

でない場合はtextNode、代わりに空の文字列を割り当てます。

于 2012-07-26T17:57:33.883 に答える
1

labelの親である要素にアクセスしたいinput:

$('#priorityContents input[type="checkbox"]:checked').parent();

これがフィドルです:http://jsfiddle.net/Hk63N/


パフォーマンスを向上させるには、セレクターを分割することを検討する必要があります。

var priorityText = '';

$('#priorityContents input[type="checkbox"]').filter(':checked').parent().each(function() {
    if ( ! priorityText ) {
        priorityText = priorityText + "|";
    }
    priorityText = priorityText + $(this).text();
});

alert(priorityText);​

jQueryドキュメントから:

これらのセレクターを使用して最高のパフォーマンスを実現するには、最初に純粋な CSS セレクターを使用していくつかの要素を選択し、次に .filter() を使用します。

これはフィドルです:http://jsfiddle.net/Hk63N/1/

于 2012-07-26T17:58:46.880 に答える
0

まず、テキストを<label>タグだけで囲みます。これは使いやすさの点で良い考えです。forチェックボックスの ID に属性を割り当てます。

<input type="checkbox" name="priority" id="priority-2" value="2" checked="checked">
<label class="checkbox" for="priority-2">        2 - Critical</label>

次に、jQuery セレクターを使用してこれを簡単にターゲットにすることができます。

$('#priorityContents input:checkbox:checked').each(function() {
    priorityText = $('label[for="'+$(this).attr('id')+'"]').text();
    ...
});

そうは言っても、代わりに、チェックボックスの属性に必要なテキストを追加し、それをコードでdata-prioritytext抽出するのが最も簡単な方法かもしれません。.data('prioritytext')

于 2012-07-26T17:59:27.487 に答える
0

あなたのコードには間違いなく欠けているものがあります。検索する場合に非常に重要な #priorityContents 要素のように。

とにかく、私は自分に合ったこのデモを作成しました。基本的にあなたが間違っているのは、この部分だと思います:

priorityText = priorityText + $(this).text();

実際のチェックボックス要素は .text() を所有していません。そこに含まれる実際の値を取得するために親まで行く必要はありません。

デモ

于 2012-07-26T18:01:18.073 に答える
0

これを試して

var checkedTxt=$('.checkbox :checked').parent().text();
console.log(checkedTxt);

デモ。

于 2012-07-26T18:02:45.900 に答える
-1

jqueryを使用して、この方法でチェックボックスのテキストを取得できます。

var value = $(document).find('input[type="checkbox"]:checked').attr('value');
于 2015-01-14T10:31:53.900 に答える
-1

var name=$(this).parent().text();

そのチェックボックスのテキストを取得します HTMLチェックボックスには、テキストデータを取得する属性がありません。parent()関数を使用 して取得します

于 2015-01-14T09:32:21.733 に答える