给出以下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都是唯一的。
答案 0 :(得分:1)
如果click事件在特定行上且元素是该行的子元素,则可以使用context来获取结果。
$(".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>
答案 1 :(得分: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
类的元素。
答案 2 :(得分:0)
所以,将一个类应用于“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');
}