javascript - 通过点击获取元素的id(JS)

标签 javascript jquery

我需要通过点击获取元素的id

我尝试编写这个函数

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


function statusFilter() {

   // var $rows = $('#table tr');
    alert($(this).get(0).id);
}

但是当我单击按钮时,它在警报中显示未定义

如果我这样写

 $('.not-filled-button').click(function() {
    //statusFilter();
    alert($(this).get(0).id);
});

一切都好

如何使其在 1 种变体中工作?

最佳答案

您可以使用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>

<小时/>

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

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


function statusFilter(element) {
   // var $rows = $('#table tr');
    alert(element.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>

或者,正如评论中提到的,如果单击时您将调用的是 statusFilter ,则可以直接分配方法引用,类似于:

$('.not-filled-button').click(statusFilter);


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>

关于javascript - 通过点击获取元素的id(JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47750498/

相关文章:

javascript - 使用 RequireJS 在生产中需要大量小文件是否有意义

javascript - 没有按钮的两个输入值之间的差异

javascript - ./src/components/Main.jsx 中的错误 - Webpack

javascript - 在动态创建的 html 中嵌入 javascript 对象

javascript - 使用 PLYR 播放 Youtube 视频 - 海报图像?

javascript - 使用 bxslider 将小图像添加到图像 slider 标题?

jquery - Fancybox 发出不需要的同步请求?

javascript - 在 beforeunload 上进行 ajax 调用不会从 selenium chromedriver 中触发?

javascript - 事件处理程序应该动态添加还是在文档准备好时添加?

javascript - 如何临时存储和禁用另一个元素的事件