JQuery получить дочернее значение по идентификатору - PullRequest
0 голосов
/ 20 ноября 2010

У меня есть следующий 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; я хочу иметь возможность получить значение поля input с идентификатором comm_id в этой панели. Это как-то возможно?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 20 ноября 2010

Вы можете получить вход с помощью .closest(), чтобы перейти к <div class="pane">, а затем .find() входу внутрь, например:

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

Обратите внимание, что изменение id на class для нескольких панелей действительно, ваш <input> должен выглядеть следующим образом:

<input type="hidden" class="comm_id" value="{$comment.id}">
0 голосов
/ 20 ноября 2010
var x = $("#comm_id").val();

EDIT:

на самом деле, вам даже не нужно выбирать его по ID: вы можете просто использовать

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

это решит проблему, если у вас есть несколько таких фрагментов кода.

...