通过单击获取元素的id(JS)

时间:2017-12-11 10:09:20

标签: javascript jquery

我需要点击获取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个变体中起作用?

3 个答案:

答案 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)

在这种情况下,您可以使用callapply将上下文应用于所调用的函数。与此类似:



$('.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;
&#13;
&#13;

或者你可以将元素作为参数传递,类似于:

&#13;
&#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;
&#13;
&#13;

或者,正如评论中所提到的,如果点击时你所有人都会statusFilter,你可以直接指定方法参考,类似于:

&#13;
&#13;
$('.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;
&#13;
&#13;

答案 2 :(得分:0)

this上下文不会自动传递到statusFilter函数中。您可以尝试将其作为参数传递:

$('.not-filled-button').click(function() {
    statusFilter(this);
});

function statusFilter(elementReference) {
    alert($(elementReference).get(0).id);
}
相关问题