2014-04-01 71 views
0

「父」之前,我有以下代碼:獲取動態生成的元素的內容並把它元素

<input id="from" type="text"> 
<div id="fromlist"> 
    <div class="item_element">Value 1</div> 
    <div class="item_element">Value 2</div> 
</div> 

所有div s的.item_element類是動態生成的。

所以我需要設置值爲#from元素與用戶點擊任何.item_element的內容。

我試過如下:

$('.item_element').on('click',function(){alert($(this).contents());}); 

但這個代碼警報「的翻譯:」不是一個字符串如我所料。

此外:即使我會得到item_element的內容,我不知道如何指向before parent元素(#from在我的情況下)。

有什麼想法?

回答

4

你需要

$('#fromlist').on('click', '.item_element', function() { 
    console.log($(this).contents()); 
    $(this).parent().prev().val($(this).text()) 
}); 

演示:Fiddle


如果您確定關於輸入元素的id,然後它是更簡單的像

$('#fromlist').on('click', '.item_element', function() { 
    $('#from').val($(this).text()) 
}); 

演示:Fiddle

  • 該警報將顯示[object Object],因爲.contents()返回一個jQuery對象,當警報將顯示[Object object] - 使用控制檯日誌記錄來代替。
+0

這個工程!謝謝! –

1

使用事件代表團(爲你的元素是動態生成

$('#fromlist').on('click','.item_element',function(){ 
    $('#from').val($(this).text()); 
}); 

演示--->http://jsfiddle.net/ep8R5/1/

---->https://learn.jquery.com/events/event-delegation/

+0

它的行爲相同的方式: 「[對象的對象]」 –

+1

@RomanMatveev看到這個演示' - >'http://jsfiddle.net/ep8R5/1/ –

+0

是,的.text()方法作品正好! –

0

嘗試.text()

$('#fromlist').on('click', '.item_element', function() { 
    $(this).closest('#fromlist').prev().val(($(this).text()); 
});