JQuery/HTML:如何提供。单击元素的函数';有多个ID?

JQuery/HTML:如何提供。单击元素的函数';有多个ID?,jquery,html,Jquery,Html,我有一个ajax成功函数: success: function (data){ var str = JSON.stringify(data); var obj = JSON.parse(str); for(var i= 1; i<=obj.length-1;i++) { $('#Name').append(obj[i].Name + "<br>"); $(this).attr

我有一个ajax成功函数:

success: function (data){

        var str = JSON.stringify(data);
        var obj = JSON.parse(str);
    for(var i= 1; i<=obj.length-1;i++)
        {  
          $('#Name').append(obj[i].Name + "<br>"); 
          $(this).attr('id',obj[i].Id);
          $('#this.id').click(function(){
          window.location.href = "test.html";
            })
        }
成功:函数(数据){
var str=JSON.stringify(数据);
var obj=JSON.parse(str);
对于(var i=1;i美元(this)的结果是什么?它指向哪里?您是否尝试过使用console.log检查它?
另外,$(“#this.id”)肯定是错误的,您正在搜索id=“this”和class=“id”可能不存在的元素。您可能应该将其替换为(“#”+obj[i].id)。
除此之外,我不太明白$(this)对您有什么作用。您正在使用id=“Name”在中添加纯文本,但如何为它们设置id?您是否尝试过执行附加,该附加已经声明了名称和id?类似于

$('#Name').append('<span id="' + obj[i].Id + '">' + obj[i].Name + '</span><br>');
$('#' + obj[i].Id).click(function(){window.location.href = "test.html";})
$('#Name').append('+obj[i].Name+'
'); $('#'+obj[i].Id)。单击(function(){window.location.href=“test.html”})
您可以使用
startsWith
属性选择器。此处将其委托给
文档
级别,因此无需在任何循环中设置它:

$(document).on('click', '[id^=ABC]', function(){
    // do stuff with 'this.id'
});

我可以在你的代码中看到一些问题,你不能在同一个页面上有多个ID实例。我更愿意为此使用一个类。另外,我假设 我不完全理解您的问题,但我认为您正在尝试在所有td上添加一个单击事件。而不是在所有相关td上添加一个名为data link的数据属性,并在主表上添加一个单击元素,以便在单击该表时触发事件。然后使用event.target查找单击的元素,然后单击c检查它是否具有相关的数据属性,如果它具有attr数据链接,则可以提取该值并重定向它

   $( document ).ready(function() {
     $("#mainTable").click(function(event){
       if(event.target.hasAttribute("data-link")){
         //this is where you would have your code
         console.log(event.target.getAttribute('data-link'));
        }
     });
   });

*您可以为每个链接分配一个公共类,只需为该类添加单击事件,如:

success: function (data){
        var str = JSON.stringify(data);
        var obj = JSON.parse(str);
    for(var i= 1; i<=obj.length-1;i++)
        {  
          var node= $('<a class="linknav">'+obj[i].Name+'</a><br>')
          node.attr('id',obj[i].Id);
          $('#Name').append(node); 
        }
}

$(document).on('click','.linknav',function(){   
window.location.href = "test.html";
});
成功:函数(数据){
var str=JSON.stringify(数据);
var obj=JSON.parse(str);

对于(var i=1;i请尝试访问所有元素ID,以
ABC
开头

代码片段:

$("[id^='ABC']").click(function(){
        window.location.href = "test.html";
    });
这也

success: function (data){

    var str = JSON.stringify(data);
    var obj = JSON.parse(str);
    for(var i= 1; i<=obj.length-1;i++)
    {  
        $('#Name').append(obj[i].Name + "<br>"); 
        $(this).attr('id',obj[i].Id);           
    }
    //...
成功:函数(数据){
var str=JSON.stringify(数据);
var obj=JSON.parse(str);

对于(var i=1;i您所说的
$('#this.id')
我指的是该名称的id。这是我感到困惑的地方。因此,我提出了一个问题。我正在尝试为每个ABC提供唯一的id(请参见输出)。您想实现什么?我想使用.click()将每个ABC链接到另一个页面属性。向我们显示正确的html代码以及您需要操作的所有ID是什么?
\this.ID
将选择
请检查此
'[ID^=ABC]'
@JohnR我需要检查什么?它必须是这样的
'[ID^=“ABC”]“
对吗?我是对的还是错的?@JohnR在这种情况下,两者都有效,但通常更好的做法是引用它,处理特定的ID
success: function (data){

    var str = JSON.stringify(data);
    var obj = JSON.parse(str);
    for(var i= 1; i<=obj.length-1;i++)
    {  
        $('#Name').append(obj[i].Name + "<br>"); 
        $(this).attr('id',obj[i].Id);           
    }
    //...