我正在使用asp.net转发器控件输出以下标记:
<div class="detailsItem">
<table style="width:100%;border: solid green 1px">
<tbody>
<tr>
<td colspan="3" style="text-align: right">
<a href="javascript:editItem($(this).closest('.detailsitem'));">Edit</a>
</td>
</tr>
</tbody>
</table>
</div>
我认为代码$(this).closest('.detailsitem')
会给我包含div。如果我对传递给editItem的内容发出警报,我只会显示一些javascript代码。不确定它来自哪里。我尝试了.parent
等的各种组合而没有运气。
我发现this post类似,但它似乎没有帮助我。我假设问题可能出在我的函数调用上。
我错过了什么?
非常感谢,一如既往!答案 0 :(得分:1)
jQuery选择器区分大小写尝试以下...(项目中的大写I)
$(this).closest('.detailsItem')
更新
Chandu关于'this'对象是href ='javascript:...'中的窗口对象也是正确的。 您还可以使用onclick =''属性,其中'this'对象是对实际锚点的引用。
答案 1 :(得分:1)
根据您的代码this
上下文在执行editItem函数时设置为window
对象。
相反,不加掩饰地绑定click事件。
e.g:
<div class="detailsItem">
<table style="width:100%;border: solid green 1px">
<tbody>
<tr>
<td colspan="3" style="text-align: right">
<a href="#edit" class="edit-item">Edit</a>
</td>
</tr>
</tbody>
</table>
</div>
<script type="text/javascript">
$(function(){
$(".edit-item").click(function(e){
e.preventDefault();
editItem($(this).closest('.detailsItem')); //Changed the class selector to match what you have in HTML
});
});
</script>
答案 2 :(得分:1)
您需要在转发器中使用类作为锚点
<a href="javascript:void(0);" class="edit">Edit</a>
在ready
事件中,附加所有Anchor的点击事件处理程序:
$(".edit").live("click",function(){
var cur = $(this);
editItem(cur.closest("div.detailsItem"));
});