1
<ul class="playlist">
    <li class="track_name">$name1
        <ul>
            <li class="play"><a class="play_link" href="$url">play</a></li>
            <li class="download"><a href="download.php?id=$url">download</a></li>
        </ul>
    </li>
    <li> ... more tracks here
</ul>
<ul class="playlist">
... more playlists here

動的に生成された順序付けされていないネストされたリストを考えると、テキスト「play」<li class="play">を$ name1に置き換える最も簡単な方法は何ですか?

私は次のことをしました:

var val = $('.play').closest('.track_name').clone().children().remove().end().text();
$('.play_link').text(val);

これですべてのtrack_nameがわかりますが、関連するトラック名だけを取得する方法がわかりません。

TIA!

4

2 に答える 2

2

You can pass a function into .text(), which will allow you to set the text of all of the .play elements:

$('.play a').text(function(i, v) {
    return $(this).closest('.track_name').clone().children().remove().end().text();
});

Code Example

于 2012-11-10T02:37:03.090 に答える
0

Simply set the selected one to have a selected class on click and then use that class to get the selected one: (or do whatever else)

Something like:

<li class="track_name">
    <span class="text">$name1</span>
    <ul>
        <li class="play"><a class="play_link" href="$url">play</a></li>
        <li class="download"><a href="download.php?id=$url">download</a></li>
    </ul>
</li>

$(".track_name").on("click", function(e) {
    $(".selected").removeClass("selected");
    $(this).addClass("selected")
        .find('.play_link').text($(".selected .text").text());
});
于 2012-11-10T02:56:04.677 に答える