js onclick 调用函数失败,求助,,怀疑onclick 不能识别jquery 的this。

<tronclick="GetPerson(<%:item.id%>);">.......</tr><scripttype="text/javascript"src="~... <tr onclick="GetPerson(<%:item.id %>);">.......</tr>

<script type="text/javascript" src="~/img/jquery.js"></script>
<script type="text/javascript">
function GetPerson(id) {
if ($(this).index() != 0) {
$(this).siblings("#uperson").remove();
$(this).after("<tr id=\"uperson\"><td colspan=\"4\">data loading</td></tr>");
$.get("/Practitioner/", { id: id }, function (data) {
$("#uperson").html(data);
});
}
}
</script>
展开
 我来答
何宜校
推荐于2018-04-05 · TA获得超过1691个赞
知道小有建树答主
回答量:702
采纳率:0%
帮助的人:963万
展开全部
你的this没有传过来。
你现在传进去的是id,可以把$(this)改成 $("#"+id);

或者 onclick="GetPerson(this)";
function getPerson(obj)
{
if($(obj).index....
}
追问
你的第一种方法应该可以,但是第二种方法, id 怎么传给js呢?
追答
你传了对象(this)进去了,获取对象的ID用 obj.id  或者 $(obj).attr("id")
绛紫方糖
2013-09-29 · TA获得超过742个赞
知道小有建树答主
回答量:197
采纳率:0%
帮助的人:233万
展开全部
你这结构压根没写全呀,GetPerson()这个函数到底是在哪里调用的啊?是元素的onClick属性么?
你的这个this其实是想访问触发该函数的元素?
如果都是的话,其实不用他们说的什么传值,因为在浏览器封装函数的时候,就会给你封装一个event局部变量,当你执行的时候,将这个click 事件传入,而event.target就是触发函数的元素。
通过$(event.target)就能把他包裹成jQuery nodeArray的形式,你再操作就可以了。
这里不能使用this,因为执行本函数的是window对象,所以你用this会指向window。
这跟使用jQuery的on方法来绑定元素的click事件,通过执行匿名函数进行处理有本质区别,一定要搞清。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fej121121
2013-09-29 · TA获得超过651个赞
知道小有建树答主
回答量:655
采纳率:66%
帮助的人:535万
展开全部
看着没问题,在if ($(this).index() != 0) 前加个alert(this);调试一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式