1

HTML 要素のコンテンツを移動またはコピーしようとしています。これは以前に尋ねられたことがあり、innerHTML() または Jquery の html() メソッドを機能させることができますが、自動化しようとしています。

要素の ID が「rep_」で始まる場合は、アンダースコアの後の要素の内容を置き換えます。

そう、

<div id="rep_target">
Hello World.
</div>

置き換えます:

<div id="target">
Hrm it doesn't seem to work..
</div>​

私はもう試した:

$(document).ready(function() {
    $('[id^="rep_"]').html(function() {
        $(this).replaceAll($(this).replace('rep_', ''));
    });
});​

-と-

$(document).ready(function() {
    $('[id^="rep_"]').each(function() {
        $(this).replace('rep_', '').html($(this));
    });
​});​

どちらも機能していないようですが、これは機能しますが、手動のみです:

var target = document.getElementById('rep_target').innerHTML;
document.getElementById('target').innerHTML = target;

関連していますが、これはテキストのみです。 JQueryは、idに文字列を含む要素のすべてのテキストを置き換えます

4

3 に答える 3

2

最初の部分には、HTML 文字列に置き換えるか、実際の要素に置き換えるという 2 つの基本的なオプションがあります。

オプション #1: HTML

$('#target').html($('#rep_target').html());

オプション #2: 要素

$('#target').empty().append($('#rep_target').children());

好みがない場合は、ブラウザがすべての DOM ビットを再構築する必要がないため、後者のオプションの方が適しています (ブラウザが HTML を要素に変換するたびに、作業が必要になり、パフォーマンスに影響します。オプション 2 はそれを回避します)。ブラウザーに新しい要素を作成させないことで機能します)。

それは内部の交換をカバーするはずです。また、要素のIDを変更したいのですが、それには1つの方法しかありません(私が知っている)

var $this = $(this)
$this.attr($this.attr('id').replace('rep_', ''));

したがって、すべてをまとめると、次のようになります。

$('[id^="rep_"]').each(function() {
    var $this = $(this)
    // Get the ID without the "rep_" part
    var nonRepId = $this.attr('id').replace('rep_', '');
    // Clear the nonRep element, then add all of the rep element's children to it
    $('#' + nonRepId).empty().append($this.children());

    // Alternatively you could also do:
    // $('#' + nonRepId).html($this.html());

    // Change the ID
    $this.attr(nonRepId);

    // If you're done with with the repId element, you may want to delete it:
    // $this.remove();
});

トリックを行う必要があります。それが役立つことを願っています。

于 2012-04-24T00:09:40.063 に答える
1

メソッドを使用して id を取得しattr、プレフィックスを削除してセレクターを作成し、要素から HTML コードを取得して、関数から返します。

$('[id^="rep_"]').html(function() {
  var id = $(this).attr('id');
  id = id.replace('rep_', '');
  var selector = '#' + id;
  return $(selector).html();
});

または単に:

$('[id^="rep_"]').html(function() {
  return $('#' + $(this).attr('id').replace('rep_', '')).html();
});
于 2012-04-24T00:19:43.043 に答える
0

私の質問から、私の理解では、re-_プレフィックスを削除してIDを置き換えてから、そのdivの内容を変更する必要があります。このスクリプトはそれを行います。

$(document).ready(function() {
    var items= $('[id^="rep_"]');
    $.each(items,function(){
       var item=$(this);
       var currentid=item.attr("id");
       var newId= currentid.substring(4,currentid.length);
        item.attr("id",newId).html("This does not work");        
        alert("newid : "+newId);
    });    

});

作業サンプル: http: //jsfiddle.net/eh3RL/13/

于 2012-04-24T00:20:44.587 に答える