javascript - 与 smallipop jquery 插件一起使用时,按钮单击不会触发

标签 javascript jquery html css

我有一个应用程序,其中我在弹出窗口中显示一个表(主要用于显示错误),其中一个 tds 有一个用于抑制此错误的按钮。我的问题是,当与 smallipop 插件一起使用时,点击事件没有被触发,但是在没有 smallipop 插件的情况下运行时它正在运行。我不知道这里发生了什么。对于以下两种情况,我都有 fiddle :

HTML

<body>
    <label>testing with smalipop</label>    
  <div class="myElement" id="test" style="width:100px;height:200px;background:blue">

  </div>
</body>

JS

var table = document.createElement('table');
for (var i = 1; i < 4; i++){
    var tr = document.createElement('tr');

    var td1 = document.createElement('td');

    var text1 = document.createTextNode('Text1');

    var btn = document.createElement("BUTTON");
    btn.className ="clickable";
    var t = document.createTextNode("CLICK ME");       
    btn.appendChild(t);  
    btn.addEventListener( 'click', function ( e ) {
        console.log('you clicked me');
     }, false );

    td1.appendChild(btn);
    td1.appendChild(text1);
    tr.appendChild(td1);
    table.appendChild(tr);  
}

  var tooltipSpan = document.createElement('span');
  tooltipSpan.className = "smallipop-hint";
  tooltipSpan.appendChild(table);
  $("#test").append(tooltipSpan);
$('.myElement').smallipop();

摆弄 smallipop

http://jsfiddle.net/fdu9vtv0/8/

没有 smallipop 的 fiddle

https://jsfiddle.net/dzrn7rus/12/

最佳答案

干扰 JavaScript 可能存在问题。有时插件会覆盖点击事件,尤其是因为 smallipop 对工具提示内部的点击行为有特殊的选项(参见示例 hideOnTriggerClick),这可能就是问题所在。

我发现当与 jQuery 绑定(bind)时,监听器仍然有效:

var table = document.createElement('table');
for (var i = 1; i < 4; i++){
    var tr = document.createElement('tr');
    var td1 = document.createElement('td');
    var text1 = document.createTextNode('Text1');

    var btn = document.createElement("BUTTON");
    btn.className ="clickable";
    var t = document.createTextNode("CLICK ME");       
    btn.appendChild(t);  
    $(btn).on( "click", function() {
        alert('You clicked me');
        console.log('you clicked me');
    });
    td1.appendChild(btn);
    td1.appendChild(text1);
    tr.appendChild(td1);
    table.appendChild(tr);  
}
var tooltipSpan = document.createElement('span');
tooltipSpan.className = "smallipop-hint";
tooltipSpan.appendChild(table);
$("#test").append(tooltipSpan);
$('.myElement').smallipop();

这按预期工作。参见相应的jsFiddle .

至于为什么它不适用于 JavaScript:我不知道。您可能会查看 smallipop 的源代码(尽管目前似乎处于离线状态)。 smallipop 可能使用了一些方法来覆盖其内容的点击事件。

关于javascript - 与 smallipop jquery 插件一起使用时,按钮单击不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29019659/

相关文章:

javascript - 当遍历数组中的对象时,为什么在函数中需要索引参数?

javascript - 包装器没有一直延伸到页面下方

javascript - 如何在点击时播放关键帧动画?

html - Bootstrap3 1 行有无限列是否有效?

javascript - Heroku 上的 Sails 部署

javascript - 捕获按下刷新图标的事件

jquery - 如何将大写的文本大写?

javascript - 使用 javascript 将目标 ="blank"添加到链接

html - TinyMCE 和从 Microsoft Word 导入/复制粘贴

javascript - 删除数组元素会导致多次重新渲染