1

ページ上のすべての要素の ID の特定の部分を特定のクラスに置き換えようとすると問題が発生します。ID は、ページが読み込まれる (データベースから取得される) ときに動的に生成されるため、置き換える必要のある値をハードコードすることはできません。

たとえば、次のようなものがあります。

<div id="BUL_123" class="commentary_list_item newItem">
  <span id="commentary_list_text_123" class="removableItem newItem">
    <img id="added_cancelIcon_123" class="cancelIcon newItem" src="delete_icon.gif">
  </span>
</div>

そして、すべての「123」を他の ID に置き換えたいのですが、「BUL_」、「commentary_list_text_」、「added_cancelIcon_」の部分はそのままにしておきます。

分割関数で 123 の値を取得できますが、ページでそれらを置き換える方法がわかりません。

どんな助けでも大歓迎です。ありがとう!

解決:

function ReplaceIDNumber(data, id) {

 jQuery('.newItem').each(function() {

    var id = jQuery(this).attr('id');
    var id_split = el_id.split('_');

    newID = id.replace(id_split[id_split.length - 1], data);
    jQuery(this).attr('id', newID);
});

(「データ」は、この関数に指示する ajax 呼び出しから取得されます)

すべての助けに感謝し、質問があいまいで申し訳ありません

4

3 に答える 3

3

attr/propのコールバック関数とreplaceメソッドを使用できます。

$('#wrapper [id$="123"]').attr('id', function(_, currentID) {
   return currentID.replace('123', '321');
});

http://jsfiddle.net/PZ9vB/

于 2013-07-11T13:32:56.550 に答える
0

問題のより良い定義がなければ、id の数値部分を次の正規表現に置き換えることができます。

var str = "BUL_123";
str.replace(/\d+/,"foo");

これは123(foo置き換えたいものに置き換えます) に置き換えられます。これは、プレフィックス部分に数字が含まれていない限り機能します。その場合は、もう少しクリエイティブになる必要があります。

于 2013-07-11T13:34:55.063 に答える
0

いくつかの良い答えがありますが、それらはすべて何かを前提としているため、さらに情報が役立つでしょう。(1)最後の部分(「_」で区切られている)は置き換える必要があるものです(2)最後の部分は常に123であるとは限りません

$(document).ready(function() {
  // all id
  var $allIds = $('[id]');
  var $this;
  var id;
  var idArray;
  var idArrayLength;
  var newId;

  $allIds.each(function() {
    $this = $(this);
    id = $this.attr('id');
    idArray = id.split("_");
    idArrayLength = idArray.length;
    newId = id.replace(idArray[idArrayLength-1], "abc");
    $this.attr('id', newId);
  })
}) 
于 2013-07-11T13:44:54.493 に答える