0

次のhtmlが与えられます:

<tr>
        <td>Content</td>
        <td>Content</td>
        <td>Content</td>
        <td><img id="imgProductPurchased" runat="server" visible="true" alt="Product Purchased" title="Product Purchased" src="/sitecore/shell/Themes/Standard/Applications/16x16/checkbox.png" /></td>
        <td>
            <asp:PlaceHolder ID="plhPurchased" runat="server">
                <span class="roundButton roundButtonLarge"><a id="hypPurchased" class="registryPurchased" href="#" title="Mark product as purchased" runat="server"><span>
                <em class="registryPurchased"></em>Purchased</span></a> <span class="buttonEndLarge">
                </span></span>
            </asp:PlaceHolder>
        </td>
    </tr>
            <tr>
                    Repeats above
            </tr>

「hypPurchased」のクリックイベントがあります。そのイベントが発生したら、plhPurchased要素とその行の「imgProductPurchased」要素にアクセスする必要があります。

編集:

これはASP.NETで構築されているため、IDはすべて一意であると述べておかなければなりません。

4

3 に答える 3

1

クリックイベントが特定の行にあり、要素がその行の子である場合、コンテキストを使用して結果を取得できます。

$(".myRow").click(function() {
    var somethingFromMyRow = $(".myChildClassName", this).text();
    alert(somethingFromMyRow);
});

ページのどこにも同じIDを複製しないように注意してください。そのため、私が提供した例では、代わりにクラス名を使用しています。たとえば、このようなHTMLを例として使用していると想像してください。

<tr class="myRow">
    <td><span class="myChildClassName">Some Text In Row 1</span></td>
    <td>More Stuff</td>
</tr>
<tr class="myRow">
    <td><span class="myChildClassName">Some Text In Row 2</span></td>
    <td>More Stuff</td>
</tr>
<tr class="myRow">
    <td><span class="myChildClassName">Some Text In Row 3</span></td>
    <td>More Stuff</td>
</tr>
于 2009-10-29T08:34:20.847 に答える
1

idはHTMLで複製できません。

とにかく、あなたがする必要があるのは親要素に到達することです(「現在の」行を含む親要素を取得するまで階層を上に移動します)、そしてそれに対してクエリを実行します:

jQuery( your_query_string, parent )

親が使用できるものである場合:

parent = query.parent()

例えば:

function click_handler(element)
{
    parent = jQuery(element).parent()
    name = jQuery(".name", parent)
    // do stuff
}

name = jQuery(".name", parent)name要素の下にクラスを持つすべての要素を取得しますparent

于 2009-10-29T08:43:20.440 に答える
0

Hasenによると、htmlでIDを複製することはできません。

したがって、クラスを「plhPurchased」に適用してから、次のようにします。

hypPurchasedでonclick="yourFuntion(this)"を置きます

function yourFuntion(elem)
{
  var tr=$(elem).closest('tr');
  var _imgProductPurchased = tr.find('img');
  // if you have more then a img per row, you should apply a class to the image to and get it by:
  // tr.find('.imgClass');
  var _plhPurchased=tr.find('.thatClassYouApplyed');
}
于 2009-10-29T10:09:24.737 に答える