jQuery通过ID获取子值

时间:2010-11-20 17:18:10

标签: javascript jquery html parent-child

我有以下HTML:

<div class="pane">
 <h3>
  <input type=hidden id="comm_id" value="{$comment.id}">
  <label id="comm_name" onclick="this.style.display='none';document.getElementById('comm_name_edit_view').style.display='';document.getElementById('comm_name_edit').value=this.innerHTML;">{$comment.writer_name}</label>
  <div id="comm_name_edit_view" style="display:none;">
   <input type=text id="comm_name_edit" value="{$comment.writer_name}">&nbsp;
   <button onclick="this.parentNode.style.display='none';document.getElementById('comm_name').innerHTML=getElementById('comm_name_edit').value;document.getElementById('comm_name').style.display='';">حفظ</button>
  </div>
 </h3>

 <p>
  <label id="comm_content" onclick="this.style.display='none';document.getElementById('comm_content_edit_view').style.display='';document.getElementById('comm_content_edit').value=this.innerHTML;">{$comment.comment}</label>
  <div id="comm_content_edit_view" style="display:none;">
   <textarea type=text id="comm_content_edit">{$comment.comment}</textarea>
   <button onclick="this.parentNode.style.display='none';document.getElementById('comm_content').innerHTML=getElementById('comm_content_edit').value;document.getElementById('comm_content').style.display='';">حفظ</button>
  </div>
 </p>
 <p><a href="#" class="btn-delete">delete</a> | <a href="#" class="btn-approve">approve</a> | <a href="#" class="btn-spam">spam</a></p>
</div>

以及下面的jQuery(我对jQuery不好)

jQuery(function(){
        $(".pane:even").addClass("alt");

        $(".pane .btn-delete").click(function(){

 var x=SOMETHING;        
         $(this).parents(".pane").animate({ backgroundColor: "#fbc7c7" }, "fast")
         .animate({ opacity: "hide" }, "slow")
         return false;
        }); ..... etc

var x=SOMETHING;中,我希望能够在该窗格中获取ID为input的{​​{1}}框的值。这有可能吗?

谢谢。

2 个答案:

答案 0 :(得分:4)

您可以使用.closest()来获取输入,然后转到<div class="pane">然后.find()内部输入,如下所示:

$(".pane .btn-delete").click(function(){
  var x = $(this).closest(".pane").find(".comm_id").val(); 
  //use x
  //animations...
});

请注意,idclass的更改对多个窗格有效,您的<input>应如下所示:

<input type="hidden" class="comm_id" value="{$comment.id}">

答案 1 :(得分:0)

var x = $("#comm_id").val();

编辑:

实际上,您甚至不需要通过ID选择它:您可以使用

var x = $( "input[type=hidden]", $( this ).parents(".pane") ).val();

如果你有几个这样的代码片段,这将解决问题。