Javascript 为什么我不能获取此链接的html内容?

Javascript 为什么我不能获取此链接的html内容?,javascript,jquery,Javascript,Jquery,我有一个表,每行有两个链接,如下所示: <table class="list"> ... <td> <a href="#" id="abcdefg756">756</a> </td> <td> <a href="#">some link</a> </td> <td>some text</td>

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

<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>
这对第一个链接有效,但对第二个链接返回未定义。我不知道为什么使用.prev不起作用

非常感谢任何帮助


请注意,我无法更改HTML结构

执行一次单击事件,转到父tr查找id以abcdefg开头的链接,获取文本

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

演示:

执行一次单击事件,转到父tr找到id以abcdefg开头的链接,获取文本

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

演示:

您的代码将与以下代码一起使用

  $(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);
      }
    })
  });
})

您的代码将与以下代码一起工作

  $(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);
      }
    })
  });
})
只需使用$'.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);
      }
  });
})
只需使用$'.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);
      }
  });
})

单击链接时,应转到父tr,然后选择其中的第一个链接,如下所示:

$(this).closest('tr').find('a').eq(0);

这样,您将始终拥有所单击行中的第一个链接。

单击链接时,您应该转到父tr,然后选择其中的第一个链接,如下所示:

$(this).closest('tr').find('a').eq(0);
这样,您将始终拥有所单击行中的第一个链接。

.prev返回上一个相邻的同级链接。如果不存在上一个同级,或者上一个同级元素与提供的选择器不匹配,则返回一个空jQuery对象

在您的情况下,将.prev更改为.parent.prev.children会有所帮助

.prev返回上一个相邻同级。如果不存在上一个同级,或者上一个同级元素与提供的选择器不匹配,则返回一个空jQuery对象

在您的情况下,将.prev更改为.parent.prev.children会有所帮助


试试这样的-

$(document).ready(function () {
    $('.list').find("a").click(function () {
        if (this.id == "") {

            alert(($($($($(this).parent()[0]).parent()[0]).children()[0]).children()[0]).innerHTML)
        }

    });
});

试试这样的-

$(document).ready(function () {
    $('.list').find("a").click(function () {
        if (this.id == "") {

            alert(($($($($(this).parent()[0]).parent()[0]).children()[0]).children()[0]).innerHTML)
        }

    });
});

.prev返回父TD中的上一个同级,但没有一个!。prev返回父TD中的上一个同级,但没有同级!这将返回id以abcdefg开头的每个链接的所有文本。我需要指定被点击的那个。@okokuro:你说你想要第一个链接的文本。这就是文本的作用。它不会从每个链接返回文本。您的注释不再与代码匹配。就像你在修理中偷偷溜走的样子:现在它不工作了。。。我一定是做错了什么这会返回每个链接的所有文本,id以abcdefg开头。我需要指定被点击的那个。@okokuro:你说你想要第一个链接的文本。这就是文本的作用。它不会从每个链接返回文本。您的注释不再与代码匹配。就像你在修理中偷偷溜走的样子:现在它不工作了。。。我一定是做错了什么,btn在HTML中的什么位置?对不起…忘了那部分。。仅更改注释后的行。我更新了代码。btn在HTML中的什么位置?对不起…忘了那部分。。仅更改注释后的行。我更新了代码。最近的总是比父母更好,父母会返回我不知道的所有关于最近的信息,谢谢!答案已相应编辑。注意:最好使用.eq0而不是[0]。[0]将在没有匹配时崩溃,而.eq0返回jQuery对象为空或其他。非常感谢!eq0是否严格等于。首先也是?是的,它是相同的,只是更短。最近的总是比返回所有Ancestori不知道的最近的父母好,谢谢!答案已相应编辑。注意:最好使用.eq0而不是[0]。[0]将在没有匹配时崩溃,而.eq0返回jQuery对象为空或其他。非常感谢!eq0严格地等于。第一个吗?是的,它是相同的,只是更短。