dポイントプレゼントキャンペーン実施中!

jQueryを初めて使うのですが、勉強不足でよく理解できていません。
テーブルの各行のa hrefに渡すパラメタを各々の行が持っている値に置き換え、元の値を消したいと思っています。
jQueryを使えば、このように出来上がったタグの結果を後から一括で書き換えることが可能だと思っているのですが、見よう見まねでスクリプトを書いているのですが、うまくいきません。

具体的には、

<table>
<tr>
<td><div class="lnk"><a href="#">A</a></div></td>
<td><div class="x">a</div></td>
<td><div class="y">1</div></td>
</tr>
<tr>
<td><div class="lnk"><a href="#">B</a></div></td>
<td><div class="x">b</div></td>
<td><div class="y">2</div></td>
</tr>
</table>

となっている値を

<table>
<tr>
<td><div class="lnk"><a href="page.html?p=a&q=1">A</a></div></td>
<td><div class="x"></div></td>
<td><div class="y"></div></td>
</tr>
<tr>
<td><div class="lnk"><a href="page.html?p=b&q=2">B</a></div></td>
<td><div class="x"></div></td>
<td><div class="y"></div></td>
</tr>
</table>

に替えたいのです。

<script>
$('tr').each(function(){
$("#lnk a").attr("href", "http://page.html?p="+ $('#x').text() + "&q=" + $('#y').text() );
$('#x').remove();
$('#y').remove();
});
</script>

と書いてみたのですが、エラーも何も出ず反応しないので、悩んでいます。
アドバイス頂けたら有難いです。

A 回答 (1件)

こんな感じでどうでしょうか?



$(function(){
$('.lnk a').each(function(){
with($(this).closest('td').siblings()){
var x=find('.x').text();
var y=find('.y').text();
find('.x').text("");
find('.y').text("");
}
var url="page.html?";
$(this).attr('href',url+"p="+x+"&q="+y);
});
});
    • good
    • 0
この回答へのお礼

yambeipさん コメント有難うございました。

素晴らしいです。一発で解決しました。

siblingsというメソッドがあるんですね。
同じ階層の繰り返しをどうやって判別するのかが判らずに困っていました。

見れば、なんとなく意味は判るのですが、jQueryまだまだ奥が深いですね。

非常に助かりました。
どうも有り難うございます。

お礼日時:2018/02/08 17:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!