我需要点击获取id
元素。
我试着写这个函数
$('.not-filled-button').click(function() {
statusFilter();
});
function statusFilter() {
// var $rows = $('#table tr');
alert($(this).get(0).id);
}
但是当我点击按钮时,它会在警告
中显示undefined
如果我这样写的话
$('.not-filled-button').click(function() {
//statusFilter();
alert($(this).get(0).id);
});
一切都好吗
我如何才能使它在1个变体中起作用?
答案 0 :(得分:2)
@(Url.Action(Action,controller))
$.ajax({
url: "@(Url.Action("GetSpDropDown", "NextPage"))",
data: { 'segInputVal': segInputVal },
cache: false,
type: "GET",
dataType: "json",
success: function (result) {
if (result.Success) {
var resultArray = result.Result;....
内的this
上下文会有所不同,
statusFilter
或者您可以简单地将事件侦听器的上下文绑定到函数$('.not-filled-button').click(function() {
statusFilter(this);
});
function statusFilter(_this) {
alert($(_this).get(0).id);
}
statusFilter
为了获得你可以做的元素的Id,
$('.not-filled-button').click(function() {
statusFilter.bind(this)(); // Approach 1
statusFilter.call(this); // Approach 2
statusFilter.apply(this); // Approach 3
});
如果你的事件监听器不包含除function statusFilter(_this) {
alert(_this.id);
}
以外的任何其他函数调用,你可以这样做,
statusFilter
答案 1 :(得分:2)
在这种情况下,您可以使用call或apply将上下文应用于所调用的函数。与此类似:
$('.not-filled-button').click(function() {
statusFilter.apply(this);
});
function statusFilter() {
// var $rows = $('#table tr');
alert(this.id);
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="someButton" class="not-filled-button">click me</button>
&#13;
或者你可以将元素作为参数传递,类似于:
$('.not-filled-button').click(function() {
statusFilter(this);
});
function statusFilter(element) {
// var $rows = $('#table tr');
alert(element.id);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="someButton" class="not-filled-button">click me</button>
&#13;
或者,正如评论中所提到的,如果点击时你所有人都会statusFilter
,你可以直接指定方法参考,类似于:
$('.not-filled-button').click(statusFilter);
function statusFilter() {
// var $rows = $('#table tr');
alert(this.id);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="someButton" class="not-filled-button">click me</button>
&#13;
答案 2 :(得分:0)
this
上下文不会自动传递到statusFilter函数中。您可以尝试将其作为参数传递:
$('.not-filled-button').click(function() {
statusFilter(this);
});
function statusFilter(elementReference) {
alert($(elementReference).get(0).id);
}