0

このように、リスト内の各リンクに ID を割り当てようとしています。

for (var j = start; j < stop; j++) { 
    link = linkBase + json[j].relatedItemId;

    $('#citations').append('<li><a href="' + link + '" id="num" + j>' + 
        json[j].title + '</a></li>'); 
        alert($('a').attr('id'));
} 

それは私に未定義または0を与え続けますか?代わりに for ループの外で $.each を使用する必要がありますか?

for ループを 2 つの目的で使用しようとしましたが、それはあまり良いアイデアではないでしょうか?

*編集***

for ループを次のような関数内に配置すると、

// Loop function for each section
var loopSection = function(start, stop) {

// Http setup for all links
var linkBase = "http://www.sciencebase.gov/catalog/item/";

// Link for citation information
var link = "";

for (var j = start; j < stop; j++) { 
    link = linkBase + json[j].relatedItemId;

    var $anchor = $("<a>", {
        href: link, 
        id: "id" + j, 
        text: json[j].title
    })   

    // .parent() will get the <li> that was just created and append to the first citation 
    element                                              
    $anchor.appendTo("<li>").parent().appendTo("#citations");
    }
}

関数の外部から id にアクセスできません

$('#citations').on('click', function (e) {
    e.preventDefault();

    var print = ($(this).attr('id'));

    alert(print);
});
4

3 に答える 3

1

このフォームはずっときれいです:

for (var j = start; j < stop; j++) { 
    link = linkBase + json[j].relatedItemId;

    $("<a>", {
        href: link, 
        id:'num' + j, 
        text: json[j].title
    }).appendTo("<li>")
      .parent()               // get the <li> we just made
      .appendTo("#citations");
} 

作成したアンカー タグへの参照が必要な場合は、次のようにします。

for (var j = start; j < stop; j++) { 
    link = linkBase + json[j].relatedItemId;

    var $anchor = $("<a>", {
        href: link, 
        id:'num' + j, 
        text: json[j].title
    });

    $anchor.appendTo("<li>").parent().appendTo("#citations");
} 
于 2013-01-16T00:26:36.977 に答える
0

コードに構文エラーがあります(id = "num" + j ..)

ただし、これはコードで行う必要があります(構文エラーを回避し、パフォーマンスを向上させます)

for (var j = start; j < stop; j++)
{
    var link = linkBase + json[j].relatedItemId;

    $('#citations').append($(document.createElement('li'))
                           .append($(document.createElement('a'))
                                   .attr('href', link)
                                   .attr('id', 'num' + j)
                                   .html(json[j].title)));
}
于 2013-01-16T00:30:15.343 に答える
0

シュミディティからの回答に同意しますが、完全を期すために

for (var j = 0; j < 10; j++) {
  var link = "someLink.htm";
  $('#citations').append('<li><a href="' + link + '" id="num' + j + '">'+ 'click here' + '</a></li>'); 
  alert($('#citations a:last').attr('id'));
} 

変数を変更して、デモとしてこのフィドルで単独で機能するようにしました

于 2013-01-16T00:42:22.743 に答える