我正在尝试获取隐藏输入字段的值,但我一直在为ar变量设置unfind值。有没有人看到我做错了什么,因为我被卡住了?
我使用父母3次来到正确的div,之后我使用按类名查找。
这是我的HTML:
<div class="heading"><span>Sanja Bajic</span><i>+</i></div>
<div class="details">
<input type="hidden" name="id" class="idValue" value="2" /><ul class="form">
<li>
<label>Name:</label><input type="text" class="in-text" /></li>
<li>
<label>Hours per week:</label><input type="text" class="in-text" /></li>
</ul>
<ul class="form">
<li>
<label>Username:</label><input type="text" class="in-text" /></li>
<li>
<label>Email:</label><input type="text" class="in-text" /></li>
</ul>
<ul class="form last">
<li>
<label>Status:</label><span class="radio"><label for="inactive">Inactive:</label><input type="radio" value="1" name="status" id="Radio5" /></span><span class="radio"><label for="active">Active:</label><input type="radio" value="2" name="status" id="Radio6" /></span></li>
<li>
<label>Role:</label><span class="radio"><label for="admin">Admin:</label><input type="radio" value="1" name="status" id="Radio7" /></span><span class="radio"><label for="worker">Worker:</label><input type="radio" value="2" name="status" id="Radio8" /></span></li>
</ul>
<div class="buttons">
<div class="inner"><a href="javascript:;" class="btn green">Save</a> <a href="javascript:;" onclick="DeleteMember();" class="btn red">Delete</a> <a href="javascript:;" class="btn orange">Reset Password</a></div>
</div>
</div>
这是我点击删除链接时使用的脚本:
<script type="text/javascript">
function DeleteMember() {
var ar = $(this).parent().parent().parent().find('.idValue').val();
$.ajax({
type: "POST",
url: 'team-members.aspx/DeleteTeamMember',
data: JSON.stringify({ "ID": ar }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: fnsuccesscallback,
error: fnerrorcallback,
});
}
function fnsuccesscallback(data) {
console.log(data);
window.location.reload();
}
function fnerrorcallback(result) {
console.log(result);
alert(result.statusText);
}
</script>
在为ar变量赋值时我做错了什么?
答案 0 :(得分:2)
onclick="DeleteMember();"
您没有在对象的上下文中调用DeleteMember
,因此在window
的上下文中调用它。
onclick
函数将在它出现的元素的上下文中调用,您可以明确地传递它:
onclick="DeleteMember.call(this);"
最好使用JavaScript绑定事件处理程序。
删除onclick属性并(因为您使用的是jQuery)改为使用on
。
$(selector_that_matches_the_element).on('click', DeleteMember);
另请注意,href="javascript:;"
清楚地表明您应该使用按钮而不是链接,并且JavaScript函数名称的约定是它们应该以小写字母开头除非它们是构造函数(即打算用new
关键字调用)。
答案 1 :(得分:1)
当您调用DeleteMember()
函数时,this
实际上会引用window
而不来查看被点击的元素,因为您正在使用它来调用它onclick="DeleteMember();"
。
请改为尝试:
function DeleteMember(elm)
{
var ar = $(elm).parent().parent().parent().find('.idValue').val();
//...
}
在你的HTML中:
onclick="DeleteMember(this);"