2012-06-05 49 views
0

我正在嘗試改編此腳本:jQuery Example: Inserting text with drag n’ drop通過替代文字替換點擊插入

我的目標是讓我的用戶點擊一個圖片縮略圖,並將適當的降價圖片代碼插入到textarea中。

我不熟悉的JS,所以我知道劇本的肉發生在這裏:

$('#ClickWordList li').click(function() { 
    $("#txtMessage").insertAtCaret($(this).text()); 
     return false 
    }); 

具體而言,.text()位在那裏,但不知道如何改變輸出以滿足我需要插入一個標記片段,而不僅僅是列表文本。

降價內嵌圖像語法如下:![Alt text](/path/to/img.jpg)

我試圖改變列表與圖像的DIV,然後更改爲.insertAtCaret($(this).src);,但我得到「未定義」作爲插入文本。

+0

你試過'$(this).attr('src')'? < - 您必須在選擇器中選擇圖像,例如'$('#ClickWordList li img')',或者將'li'選擇符改爲'$(this).find('img')。 attr('src')'如果你在'li's裏面有圖像。 –

回答

2

$(this).src未定義,因爲$(this)jQuery object,而jQuery對象沒有src屬性。假設你有你的選擇的圖像元素,你可以試試:

$("#txtMessage").insertAtCaret($(this).attr('src')); 

.attr() jQuery的方法,因爲只有一個參數時,將返回匹配元素的給定屬性的值。

$("#txtMessage").insertAtCaret($(this)[0].src); 

爲了讓文字DOM元素的src

額外的解釋(如果需要)
.text() jQuery的方法,沒有給出參數時,將返回所有文字由this引用的元素中,也就是事件的目標,在這種情況下,點擊li#ClickWordList元素內。

.insertAtCaret()是由您的drag 'n drop插件提供的jQuery對象的擴展函數。

return false會做正是它說,在click事件的處理程序返回false所選元素,簡單地取消事件,並防止其傳播進一步向上冒泡的DOM。

對不起,如果有任何錯別字。

+0

這正是我所需要的,謝謝! – Drew

+0

不客氣=]剛剛添加了一個額外的解決方案,但我會優先選擇第一個。 (只是補充完整性:P) –