jquery怎么获取不到tr的id呢?每次都是undefine

<form id="form1" runat="server">
<div style=" border:1px solid #f00;">
    <table id="table1">
        <tr id="tr1">
            <td>字段名</td>
            <td>字段类型</td>
            <td>字段大小</td>
            <td>控件类型</td>
            <td>表名</td>
        </tr>
        <tr id="trFormatStr_1" onclick="fnTrClick()" runat="server">
            <td id="td1"><asp:TextBox ID="tbxStrName" runat="server" Text=''></asp:TextBox></td>
            <td id="td2"><asp:TextBox ID="tbxStrType" runat="server" Text=''></asp:TextBox></td>
            <td id="td3"><asp:TextBox ID="tbxStrSize" runat="server" Text=''></asp:TextBox></td>
            <td id="td4">
                <asp:DropDownList ID="ddlControlType" runat="server">
                </asp:DropDownList>
            </td>
            <td id="td5"><asp:TextBox ID="TextBox1" runat="server" Text=''></asp:TextBox></td>
        </tr>
    </table>
</div>
</form>
$(function () { // $("#trFormatStr_1").click(function () { // alert(1); // }); }); function fnTrClick() { alert($(this).attr("id")); alert(2); }

脚本代码图片:
图片说明
运行起来,id没变的,可看图片
图片说明

可以尝试下$("#trFormatStr_1")[0]

图片说明

图片说明
谢谢上面的朋友,已经解决

1楼的朋友,是;2L是自己,0.0

你的this指针指错地方了。
你看看alert(this == window)是不是true。
建议在方法中传入this。
如onclick=\"fnTrClick(this);\"

function fnTrClick(obj){
alert(obj.cells[0].id);//这样就可以了
alert($(obj.cells[0]).attr("id"));//这样也可以,但是这样显得化蛇添足
}

如果有帮助,希望采纳

其实你理解jquery就知道什么原因了,jquery获取返回的都是它封装了一层的对象

恩,知道:jquery获取返回的都是它封装了一层的对象,但是怕用起来会忘记,

为啥要用attr取值呢,直接将id当成参数传到方法里面不就行了?你又不是用的on("click",function(){})这种方法绑定响应事件