2010-11-20 6 views
0

Aşağıdaki HTML gelmiş tarafından çocuk değeri elde: var x=SOMETHING; yılındajQuery kimliği

<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> 

ve aşağıdaki jQuery (ı jQuery kötüyüm)

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 

, ben mümkün istiyorum Bu bölmede comm_id kimliğine sahip input kutusunun değerini almak için. Bir şekilde mümkün mü?

Teşekkür ederiz.

+1

Birden çok bölmeniz var mı? Kulağa benzediği şey ... ve ID öznitelikleri bir belgede benzersiz olmalıdır. –

cevap

4

Bunu, içeride daha sonra <div class="pane">.find() girdi almak için .closest() kullanarak giriş alabilirsiniz:

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

Not idclass için değişim birden bölmeleri için geçerli olabilmesi için, sizin <input> gerektiği Şunlara benzer:

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

Teşekkürler :), ve var z = $ (this) .closest (". Pane") innerHTML değerini nasıl elde edersiniz (". Comm_content"). –

+0

Yup, '.text()' komutunu kullanın: '$ (this) .closest (" .pane ")., (". Comm_content ") bulun. Text();', tekrar, 'class = "comm_content" olarak değiştirin. geçerli olmak. –

+0

teşekkürler çalıştı :) –

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

DÜZENLEME: aslında

, hatta kimliğine göre seçmek gerekmez: kod birkaç parçalarını varsa sadece sorunu çözecek

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

kullanabiliriz bunun gibi.

+0

Bu geçerli bir yaklaşım değildir, çünkü yineleme yaptığınız $ (".pane: even") 'dır, yani bir 'id' burada uygun değildir - düzenlemeniz için bu geçerli değildir, "Bu", tıklanan düğmeye, div'a değil ... bu yüzden girdi bulamaz. –

+0

@Nick Craver hangi şekilde "$ (" .pane: even ")' tek bir '$ (" .pane .btn-delete ")' olmadığını söyler? Cevabımı, bunun için hesaplamak için düzenledim. – Razor

+2

Çizgisel stilde ('.alt 'sınıfı) birden çok bölme olduğunu gösterir, böylece' id = "comm_id" 'benzersiz değildir ... bu bir problemdir. Düzenlemeniz için '', * .btn-delete 'bağlantısının * içinde değil, dolayısıyla herhangi bir öğe bulamayacaktır. –