2012-12-14 58 views
0

我有這組表單,當用戶檢查輸入時,我需要獲取該div以外的值,基本上是一個父div,嘗試它它使用.parent(),然後找到,但不能使它正常工作,不知道做什麼我做錯了的事,我有一個js http://jsfiddle.net/creativestudio/bCgeD/2/Jquery在檢查子複選框時獲取父元素輸入的值

這是我的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>​ 

回答

0

在代碼中您要設置html of hidden input field..

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

輸入元素沒有內HTML ..

也許你正在尋找.val(this.value)

您還可以訪問複選框使用class like而不是attribute selector..

我改爲填充跨度class="likes",似乎是工作的罰款..

Check Fiddle

0

嘗試家長,家長將只搜索一個DIV較高,但家長將搜索文件,直到它,如果發現存在股利。

見的jQuery機制的文檔: Jquery parent

0

文本Value的跨度是不同類likesfeedback_nid您已設置爲一個隱藏的輸入類。

如果你想隱藏的輸入具有相同的價值使用val()輸入和使用text()

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(); 
+0

您也可以使用父母關閉兩次parent() – Perry

相關問題