用jquery获取容器元素

时间:2012-07-06 23:01:54

标签: jquery asp.net jquery-selectors

我正在使用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类似,但它似乎没有帮助我。我假设问题可能出在我的函数调用上。

我错过了什么?

非常感谢,一如既往!

3 个答案:

答案 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"));
 });