0

私はこのフォームのセットを持っています、ユーザーが入力をチェックするとき、私はこのdivの外にある値、基本的には親divを取得する必要があり、.parent()を使用してそれを実行しようとしますが、それを見つけることができませんでした、何が間違っているのかわからない、私はjshttp ://jsfiddle.net/creativestudio/bCgeD/2/を持っています

これは私のjsです:

                    function set_index_id_checkbox() {
                        $("input:checkbox[name='like']").each(function(index){
                            var currElem = $(this);
                            var prevLabel = currElem.next();
                            currElem.attr("id", this.id + index);
                            prevLabel.attr("for", prevLabel.attr("for") + index);
                        });
                    }

                    set_index_id_checkbox();


                    function getValues(){
                        $("input:checkbox[name='like']").click(function(){
                            if (this.checked) {
                               $(this).closest('.reply-form').find('.feedback_nid').text(this.value);
                            } else {
                              // ...
                            }
                       });
                    } getValues();

これは私のhtmlです:

        <input type="hidden" class="feedback_nid" value="form a 111">
        <input type="hidden" class="branch_nid" value="form a 222">

        <div class="block">
            <!-- value -->
            <span class="info-item float-left value">
                <span class="likes">value</span>
            </span><!-- /.value -->
            <!-- checkbox -->
            <div class="btn like-checkbox float-right">
                     <input id="like" class="like" type="checkbox" name="like" value="33">
                     <label class="like" for="like">like 1</label>
            </div><!-- /checkbox -->
        </div>

        </div>

        <div class="reply-form">
        <input type="hidden" class="feedback_nid" value="form a 111">
        <input type="hidden" class="branch_nid" value="form a 222">
        <div class="block">
            <!-- value -->
            <span class="info-item float-left value">
                <span class="likes">value</span>
            </span><!-- /.value -->
            <!-- checkbox -->
            <div class="btn like-checkbox float-right">
                     <input id="like" class="like" type="checkbox" name="like" value="45">
                     <label class="like" for="like">like 2</label>
            </div><!-- /checkbox -->
        </div>
        </div>

        <div class="reply-form">
        <input type="hidden" class="feedback_nid" value="form a 111">
        <input type="hidden" class="branch_nid" value="form a 222">
        <div class="block">
            <!-- value -->
            <span class="info-item float-left value">
                <span class="likes">value</span>
            </span><!-- /.value -->
            <!-- checkbox -->
            <div class="btn like-checkbox float-right">
                     <input id="like" class="like" type="checkbox" name="like" value="66">
                     <label class="like" for="like">like 3</label>
            </div><!-- /checkbox -->
        </div>
        </div>​
4

4 に答える 4

0

設定しようとしているコードでhtml of hidden input field..

.find('.feedback_nid').html(this.value);

入力要素には内部 HTML がありません。

多分あなたが探している.val(this.value)

class likeまた、代わりに を使用してチェックボックスにアクセスできますattribute selector..

代わりに、スパンにデータを入力していますがclass="likes"、正常に動作しているようです..

フィドルをチェック

于 2012-12-14T02:15:43.043 に答える
0

親を試してください。親は 1 つ上の div のみを検索しますが、親は div が存在する場合はそれが見つかるまでファイルを検索します。

jquery のドキュメントを参照してください: Jquery の親

于 2012-12-14T02:18:28.383 に答える
0

テキストを含むスパンは、非表示の入力用に設定したクラスではなく、Value別 のクラスです。likesfeedback_nid

非表示の入力に同じ値を入力に使用させたい場合は、次を使用val()してスパンを設定しますtext()

于 2012-12-14T02:20:42.210 に答える
0

http://jsfiddle.net/gunderson/bCgeD/4/

jsfiddle で動作するように例を更新しました。

私が行った主な変更は、探している値を含む div に到達するまで、 .parent() を使用してツリーをたどることでした。さらに、構文を更新して、jquery.val(); を使用して隠しフィールドから値を取得しました。

 function getValues(){
    $("input:checkbox[name='like']").click(function(){
        if (this.checked) {
           var value = $(this).parent().parent().parent()
               .find('.feedback_nid').val();
            $(this).parent().parent().find(".likes").text(value);
        } else {
          // ...
        }
   });
} getValues();
于 2012-12-14T02:24:17.377 に答える