我有一个表,每行有两个链接,如下所示:
<table class="list">
...
<td>
<a href="#" id="abcdefg756">756</a>
</td>
<td>
<a href="#">some link</a>
</td>
<td>some text</td>
<td>some more text</td>
...
</table>
第一个链接始终有一个ID,以相同的字符开头,后跟一个随机数。第二个链接没有ID。当点击 链接时,我想获得第一个链接的内部html。
在这里演示:http://codepen.io/sol_b/pen/XNqOgN
我尝试过使用Jquery的一些东西。这就是我到目前为止所做的:
$('.list').find("a").click(function(){
$(this).each(function(){
if ($(this).attr('id') !=undefined) {
var number = $(this).html();
alert (number);
} else if ($(this).attr('id') == undefined) {
var number = $(this).prev('a').html();
alert (number);
}
})
});
这适用于第一个链接,但是它会为第二个链接返回undefined。我不确定为什么使用.prev不起作用。
非常感谢任何帮助!
(请注意,我无法更改HTML结构)
答案 0 :(得分:3)
执行单击事件,转到父tr
找到ID为“abcdefg”的链接,获取文本
$('.list tr a').click(function(){
var text = $(this).closest('tr').find('a[id^="abcdefg"]').text();
console.log(text)
});
答案 1 :(得分:1)
只需使用$('.list tr td a').first().html()
即可获取表格的第一个链接。
所以,这就是你所需要的:
$(function(){
$('.list').find("a").click(function(){
if ($(this).attr('id') !=undefined) {//Links with id (1st column)
var number = $(this).html();//Get clicked link
alert (number);
} else if ($(this).attr('id') == undefined) {//Links with no id (2nd column)
var number = $('.list tr td a').first().html();//Get first link
alert (number);
}
});
})
答案 2 :(得分:1)
.prev()
返回上一个相邻的兄弟姐妹。如果不存在先前的兄弟,或者前一个兄弟元素与提供的选择器不匹配,则返回一个空的jQuery对象。
如果您将.prev()
更改为.parent().prev().children()
,则会有所帮助。
答案 3 :(得分:0)
您的代码将使用以下代码
$(function(){
$('.list').find("a").click(function(){
$(this).each(function(){
if ($(this).attr('id') !=undefined) {
var number = $(this).html();
alert (number);
} else if ($(this).attr('id') == undefined) {
//Little bit change here
var number = $(this).parent().prev().find('a').html();
alert (number);
}
})
});
})
答案 4 :(得分:0)
点击链接后,您应该转到父级&#34; tr&#34;,然后选择其中的第一个链接,如下所示:
$(this).closest('tr').find('a').eq(0);
这样,您在所点击的行中始终拥有第一个链接。
答案 5 :(得分:0)
尝试这样的事情 -
$(document).ready(function () {
$('.list').find("a").click(function () {
if (this.id == "") {
alert(($($($($(this).parent()[0]).parent()[0]).children()[0]).children()[0]).innerHTML)
}
});
});