-1

基本的に私はSCEditorを使用しており、メッセージからテキストを取得してテキストエリアに貼り付ける「Quote」と呼ばれるフォーラムの投稿または記事のコメントにボタンが必要です。私はこのコードを持っています:

<script type="text/javascript">
jQuery.noConflict(); //disable global $ for jQuery
jQuery(document).ready(function($){
    $(function(){
    $('#quote').click(function() {
        $('textarea').sceditor('instance').insert("[quote=admin]Some text[/quote]");
    });
    });
});
</script>

これで、「[quote=admin]Some text[/quote]」がテキストエリアに配置されます。問題は、どういうわけか動的にする必要があるので、それが理にかなっていれば、すべてのコメントの上にそのコードをコピーする必要はありませんか? したがって、これの代わりに:

insert("[quote=admin]Some text[/quote]");

そのセクションは、その下のボックスからすべてのテキストを取得しますか? 引用されたビットを投稿のテキストに手動で置き換えるのではなく。

基本的に、上記の引用されたビットを、引用リンクのクリックに基づいて、異なる div の内容に置き換えますか?

4

2 に答える 2

0

エントリの構造によって異なります。「quote」ボタンとdivid= "entry"が、親または別のコンテナー内にネストされた同じレベルにあると仮定します。

<div id="wholeThing">
    <div id="entry"> ....... </div>
    <!-- other stuff goes here -->
    <input type="button" name="quote" ......>
</div>

次に、これで行くことができます:

$(this).parent().find("#entry").text();

コンテンツがどこにあるかを正確に知っている場合は、階層内の前の要素を反復処理できます。

$(this).prev().prev().text(); // if content container is 2 elements in front 

ボタンクリックハンドラーの場合、クラスを設定するか、その名前属性を使用できます。

$('div input[name="quote"]').click(function() {  // for name attribute
    $('textarea').sceditor('instance').insert("[quote=admin]Some text[/quote]");
});

すべての「引用」ボタンに等しいクラスの場合:

$('.className').click(function(){ ... 

それがすべてのエントリの唯一の入力要素である場合:

$('div input').click(function() { ...
于 2013-01-17T20:03:05.510 に答える
0

この簡単な例のように正規表現を使用できます

<textarea id="ta" rows="5" cols="20">
  [quote=admin]Some text[/quote]
</textarea>
<br />
<input type="button" value="Click Me" onclick="rep()" />
<br />
<div id="dv" style="width:100px; height:100px; border:black 1px solid;">
  Some div content
</div>

<script type="text/javascript">
  function rep() {
    var tatxt = $("#ta").val();
    var dvtxt = $("#dv").html();
    var newtxt = tatxt.replace(/\[quote\=admin\].*?\[\/quote\]/ig, dvtxt);
    $("#ta").val( newtxt );
  }
</script>

ここで動作することがわかります

于 2013-01-17T19:53:31.343 に答える