0

我正在使用 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等,但没有运气。

我发现这个帖子很相似,但它似乎并没有帮助我。我假设问题可能出在我的函数调用上。

我错过了什么?

非常感谢,一如既往!

4

3 回答 3

1

jQuery 选择器区分大小写,请尝试以下操作...(项目中的大写 I)

$(this).closest('.detailsItem')

更新:

Chandu关于“this”对象是 href='javascript:...' 中的窗口对象也是正确的。您还可以使用 onclick='' 属性,其中 'this' 对象是对实际锚点的引用。

于 2012-07-06T23:07:53.030 回答
1

在执行 editItem 函数时,根据您的代码this上下文设置为对象。window

而是不显眼地绑定点击事件。

例如:

<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>
于 2012-07-06T23:08:07.320 回答
1

您需要为中继器中的锚点使用一个类

<a href="javascript:void(0);" class="edit">Edit</a>

ready事件中,为所有 Anchor 附加一个单击事件处理程序:

$(".edit").live("click",function(){
    var cur = $(this);
    editItem(cur.closest("div.detailsItem"));
 });
于 2012-07-06T23:08:34.980 回答