为什么我无法获得此链接的html内容?

时间:2016-12-08 09:58:39

标签: javascript jquery

我有一个表,每行有两个链接,如下所示:

<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结构)

6 个答案:

答案 0 :(得分:3)

执行单击事件,转到父tr找到ID为“abcdefg”的链接,获取文本

$('.list tr a').click(function(){
var text = $(this).closest('tr').find('a[id^="abcdefg"]').text();
console.log(text)
});

演示:http://codepen.io/anon/pen/qqKrjE?editors=1111

答案 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(),则会有所帮助。

http://codepen.io/anon/pen/XNYMNG?editors=1010

答案 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)
        }

    });
});