首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入DOM的元素中未触发Onclick

问插入DOM的元素中未触发Onclick
EN

Stack Overflow用户
提问于 2014-12-09 13:16:11
回答 2查看 1K关注 0票数 0

在IE的某些特定实例中,Onclick事件的动态按钮(按钮在页面加载后加载到DOM )不会触发。问题可以被调用,特别是在IE中的服务器窗口上。它不依赖IE版本。

HTML:

代码语言:javascript
复制
<div id="test"></div>

联署材料:

代码语言:javascript
复制
$(function() {
    $('#test').append('<input type="button" onclick="alert(1);" value="Test"/>');
});

JSFIDDLE:http://jsfiddle.net/sbzu7xkz/4/

我知道有其他的办法可以用其他方式来约束,但不幸的是,在我的情况下,这是不可能的。

  • 当我将按钮加载到页面时,有什么解决办法可以做,比如调用初始化之类的吗?
  • 某个问题是否有可能的解决方案?
  • 能否通过修补或重新配置IE来解决这个问题?

任何帮手都可以。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-09 13:42:24

在这种情况下,带有内联JS事件的动态添加元素不会触发。请使用jQuery的

代码语言:javascript
复制
.on( "click", handler ) //or a shortcut .click()

一个棘手的解决办法是附加事件,以防在这些特定情况下没有绑定:

代码语言:javascript
复制
var wrapper = $('#test');

wrapper.append('<input type="button" onclick="alert(1);" value="Test 2"/>');

//if click event isn't presented
if (typeof(wrapper.getElementsByTagName('input')[0].onclick) === 'undefined'){
    // let's attach the event
    $('#test>input[type="button"]').click(function(){
        var js = $(this).attr('onclick');
        // and evaluate your JS
        eval(js);
    });
}

当然,理想情况下,这种情况不应该发生。所有事件都应该在JS中动态绑定。

这把小提琴在旧的IE上进行了测试,并且运行得很好:

http://jsfiddle.net/sbzu7xkz/5/

票数 1
EN

Stack Overflow用户

发布于 2014-12-09 13:27:41

老版本的浏览器在使用HTML Singleton Tags时遇到了一些问题。尝试使用“正确”的/old HTML。

代码语言:javascript
复制
    $('#test').append('<input type="button" onclick="alert(1);" value="Test"></input>');

IE只会附加使用正确html的项目( IE希望关闭html标记)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27379842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档