繁体   English   中英

单击警报按钮后的内部内容

[英]Alert button's inner content after clicking it

请帮助修复错误:当前代码未定义警报而不是按钮的内部内容

 function registerClickHandler() {
   $('#clickme').click(function() {
     setTimeout(function() {
       alert(this.innerHTML);
     }, 200);
   });
 }

超时处理程序中的this不是按钮

function registerClickHandler() {
    $('#clickme').click(function (e) {
        setTimeout(function () {
            alert(e.currentTarget.innerHTML);
        }, 200);
    });
}

尝试在setTimeout之前获取值

  function registerClickHandler() {
        $('#clickme').click(function () {
            var value=this.innerHTML;
            setTimeout(function () {
                alert(value);
            }, 200);
        });
    }

在Java脚本中, this指向最后一个函数,并且在超时处理程序中不是按钮,这就是为什么出现错误的原因。

同样,使用on.('click', function(){...})实现这种功能或onclicks是一个好习惯on.('click', function(){...})

在下面您可以看到我的示例:

$(document).ready(function(){
    $('#clickme').on('click', function (e) {
        setTimeout(function() {
            alert(e.currentTarget.innerHTML);
        }, 200);
    });
});

您可以看一下并在这里运行它: http : //jsfiddle.net/gon250/6qwk0g1t/1/

尝试将click事件处理程序放在函数外部。 还要在调用setTimout之前将“ this”的值传递给变量。 稍后在setTimout中使用此变量。 在此处阅读有关Javascrpt原型的更多信息

 $(document).ready(function(){ $('#clickme').click(function() { var me = this; setTimeout(function() { alert(me.innerHTML); }, 200); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="clickme">click me</div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM