我目前遇到的问题是jQuery从最近的td.index
返回文本。 Heres what I'm working with:
$(document).ready(function() {
$.getJSON("http://ddragon.leagueoflegends.com/cdn/4.14.2/data/en_US/rune.json", function(response){
console.log(response.data);
$.each(response.data, function (index, entry) {
$('table.runes').append('<tr><td class="index">'
+index+ '</td><td class="icon"> \
<div style="width:48px;height:48px;background:url(./assets/runes/rune0.png) -' +entry.image.x+ 'px -' +entry.image.y+ 'px no-repeat"> \
</div></td><td class="entry-name">'
+entry.name+ '</td></tr> \
<tr><td></td><td class="entry-desc">'
+entry.description+ '</td></tr>'
);
});
});
jQuery("body").on("click", "td.entry-name", function() {
var getText = $(this).closest('td.index');
alert(getText.text());
});
});
正如您所看到的,该表是使用JSON / jQuery生成的,并且有一个td
,其类名为index
,其中包含每行的ID号。
当点击td.entry-name
时,它应该查找最接近的td.index
并将其中的文本(ID号)作为警报返回。出于某种原因,这不起作用。
我想知道是否可以通过查看代码来查看问题。
答案 0 :(得分:1)
因为td.index
是td.entry-name
的兄弟,而不是祖先,所以请使用.siblings()代替.closest()
jQuery("body").on("click", "td.entry-name", function() {
var getText = $(this).siblings('td.index');
alert(getText.text());
});
答案 1 :(得分:0)
您需要使用.siblings()
或.prevAll()
代替.closest()
var getText = $(this).siblings('td.index');
<强> Working Demo with siblings 强>
或
var getText = $(this).prevAll('td.index');
<强> Working Demo with prevAll 强>
答案 2 :(得分:0)