0

我有这组表单,当用户检查输入时,我需要获取这个 div 之外的值,基本上是一个父 div,尝试使用 .parent() 执行它,然后找到但无法使其工作,不知道我做错了什么,我有一个js http://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

试试父母,父母只会搜索更高的一个div,但父母会搜索文件,直到找到该div(如果存在)。

请参阅 jquery 文档: Jquery parent

于 2012-12-14T02:18:28.383 回答
0

其中包含文本的跨度Value是一个不同 likes的类,而不是feedback_nid您为隐藏输入设置的类。

如果您希望隐藏的输入具有相同的值,请使用val()输入并使用text()

于 2012-12-14T02:20:42.210 回答
0

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

我更新了您的示例以在 jsfiddle 中工作。

我所做的主要更改是使用 .parent() 遍历树,直到找到包含您要查找的值的 div。此外,我更新了您的语法以使用 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 回答
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 回答