簡體   English   中英

jQuery復制文本並粘貼到textarea中

[英]JQuery Copy text & paste into textarea

我創建了一個javascript函數,該函數將使用隱藏的跨度,復制該跨度內的文本,並將其插入網站上的單個textarea標簽中。 我已經用JavaScript編寫了一個可以做到這一點的函數(好吧,只需單擊幾下),但是我知道有更好的方法-有什么想法嗎? 行為類似於Twitter的Retweet,但使用博客上帖子的各個部分。 哦,我還在標題中調出了jquery。

<script type="text/javascript">
function repost_submit(postID) {    
    $("#repost-" + postID).click(function(){
        $("#cat_post_box").empty();
        var str = $("span#repost_msg-" + postID).text();
        $("#cat_post_box").text(str);
    });
}
</script>

根據您問題中的評論,我假設您的HTML中包含以下內容:

<a href="#" onclick="repost_submit(5);">copy post</a>

而且我還假設,因為您傳遞的是帖子ID,所以每頁可以有多個。

jQuery的優點之一是,您可以對元素集做一些非常酷的事情,而不必使用內聯Javascript事件。 如今,這些做法已被視為不良做法,因為最好將Javascript與演示代碼分開。

那么,正確的方法是執行以下操作:

<a href="#" id='copy-5' class='copy_link'>copy post</a>

然后,您可以擁有更多類似的外觀:

<a href="#" id='copy-5' class='copy_link'>copy post</a>
<a href="#" id='copy-6' class='copy_link'>copy post</a>
<a href="#" id='copy-7' class='copy_link'>copy post</a>

最后,您可以使用jQuery編寫代碼來執行以下操作:

$(function() { // wait for the DOM to be ready
    $('a.copy_link').click(function() { // whenever a copy link is clicked...
        var id = this.id.split('-').pop(); // get the id of the post
        var str = $('#repost_msg-' + id); // span not required, since it is an ID lookup
        $('#cat_post_box').val(str); // empty not required, and val() is the proper way to change the value of an input element (even textareas)
        return false;
    });
});

即使頁面中只有一個帖子,這也是最好的方法。 您的代碼的部分問題在於,第一次單擊它會使函數綁定,而在隨后的單擊中是最終調用該函數。 您可以通過將其更改為僅位於document.ready中來進行快速而骯臟的修復。

$("#repost-" + postID).click(function(){
  $("#cat_post_box").val(''); // Instead of empty() - because empty remove all children from a element.
    $("#cat_post_box").text($("#repost_msg-" + postID).text());//span isn't required because you have and id. so the selector is as efficient as it can be.
});

並將所有內容包裝在$(document).ready(function(){/ 在此處插入代碼 /})中,以便在加載DOM時將其綁定到$(“#repost-” + postID)按鈕或鏈接。

當我單擊鏈接時,出現在#cat_post_box中的文本為“ object Object”時,Paolo的示例出現了問題。 在該語句的末尾添加“ .text()”后,我就可以工作了。

var str = $('#repost_msg-' + id).text();

謝謝你的例子保羅!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM