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

Javascript 与smallipop jquery插件一起使用时,按钮单击不会触发,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个应用程序,其中我在弹出窗口中显示一个表(基本上用于显示错误),其中一个tds有一个按钮用于抑制此错误。我的问题是,当与smallipop插件一起使用时,不会触发click事件,但是在没有smallipop插件的情况下运行时,click事件会运行。我不知道这里发生了什么。以下两种情况我都有小提琴: HTML <body> <label>testing with smalipop</label> <div class="myEle

我有一个应用程序,其中我在弹出窗口中显示一个表(基本上用于显示错误),其中一个tds有一个按钮用于抑制此错误。我的问题是,当与smallipop插件一起使用时,不会触发click事件,但是在没有smallipop插件的情况下运行时,click事件会运行。我不知道这里发生了什么。以下两种情况我都有小提琴:

HTML

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

  </div>
</body>

smalipop检测
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();
var table=document.createElement('table');
对于(变量i=1;i<4;i++){
var tr=document.createElement('tr');
var td1=document.createElement('td');
var text1=document.createTextNode('text1');
var btn=document.createElement(“按钮”);
btn.className=“可点击”;
var t=document.createTextNode(“单击我”);
附肢儿童(t);
btn.addEventListener('click',函数(e){
log(“你点击了我”);
},假);
td1.儿童(btn);
td1.追加子项(text1);
tr.appendChild(td1);
表1.儿童(tr);
}
var tooltipSpan=document.createElement('span');
tooltipSpan.className=“smallipop提示”;
tooltipSpan.appendChild(表);
$(“#测试”).append(tooltipSpan);
$('.myElement').smallipop();
摆弄smallipop

不使用smallipop的小提琴


干扰JavaScript可能有问题。有时候插件会覆盖点击事件,特别是因为smallipop在工具提示中有特殊的点击行为选项(例如,请参见),这可能就是问题所在

我发现使用jQuery绑定时,侦听器仍然可以工作:

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();
var table=document.createElement('table');
对于(变量i=1;i<4;i++){
var tr=document.createElement('tr');
var td1=document.createElement('td');
var text1=document.createTextNode('text1');
var btn=document.createElement(“按钮”);
btn.className=“可点击”;
var t=document.createTextNode(“单击我”);
附肢儿童(t);
$(btn).在(“单击”,函数()上){
警惕(“你点击了我”);
log(“你点击了我”);
});
td1.儿童(btn);
td1.追加子项(text1);
tr.appendChild(td1);
表1.儿童(tr);
}
var tooltipSpan=document.createElement('span');
tooltipSpan.className=“smallipop提示”;
tooltipSpan.appendChild(表);
$(“#测试”).append(tooltipSpan);
$('.myElement').smallipop();
这正如预期的那样有效。见相应的


至于为什么它不能与JavaScript一起工作:我不知道。您可以查看smallipop的源代码(尽管目前它似乎处于脱机状态)。smallipop可能使用了一些方法来覆盖其内容的单击事件。

谢谢您的回答。但是小提琴不能正常工作。单击事件只工作一次。尽管我对jquery非常陌生,但我还是会看一看smallipop代码。@deb:那是因为每次您在循环中更改DOM时。并且您只有对对象的引用
btn
。因此,所有侦听器将在最后一次迭代时添加到
btn
,这三个按钮都是。这被称为,也可以看到。如果你应用他们的答案,应该可以。嗨,Jean,我尝试了旧代码和你发布的链接中给出的所有建议,然后我删除了循环,问题似乎在其他地方。这里,是更新的小提琴,在popover跨度中只有一个btn