0

チェックされたチェックボックスのラベルを取得し、値を警告するために、単純な数行のコードを使用しています。しかし、何らかの理由で、アラートにはラベルではなく、すべてのチェックボックスの [object Object] が表示されます。私は何を間違っていますか?

function validate(){
    var interests="";
    $('input[type=checkbox]').each(function () {
           if (this.checked){
               var id=$(this).attr('id');
               interests += $("#"+id).next()
           }
    });
    alert(interests);

}​

jsFiddle :

4

4 に答える 4

2

使用.text()

interests += $("#" + id).next().text();

1行のコードで同じ結果を達成できることに注意してください。

$('input:checked').next().text();

1行のコードjsFiddle

于 2012-09-20T18:24:27.913 に答える
2
var id=$(this).attr('id');
interests += $("#"+id).next()

待って、jQueryオブジェクトを作成し、要素のIDを取得します...そして、そのIDを使用してそのIDでjQueryオブジェクトを選択しますか?それはどういう意味ですか?

それとは別に、[object Object]はラベルを含むjQueryオブジェクトです。

実際のラベル要素を取得するには、次のようにします。

var label = $("[for="+this.id+"]")[0]

[0]ラベルを含むjQueryオブジェクトが実際に必要な場合は削除します。

于 2012-09-20T18:25:54.237 に答える
0

によって返されたオブジェクトnext()を文字列に変換しているため、コンテンツのテキストを取得するには[object Object]を呼び出す必要があります。.text()

interests += $(this).next().text();
于 2012-09-20T18:25:02.117 に答える
0

.next()文字列にキャストすると、「[object Object]」が得られるjQueryオブジェクトが得られます。おそらく、代わりにオプションのテキストが必要です。

interests += $("#"+id).next().text()

http://jsfiddle.net/WFzS7/1/

于 2012-09-20T18:26:49.223 に答える