我有一个应用程序,其中在弹出窗口中显示一个表(主要用于显示错误),tds之一具有一个按钮,用于抑制此错误。我的问题是当与smallipop插件结合使用时,click事件不会被触发,但是在没有smallipop插件的情况下运行时,该事件仍在运行。我不知道这是怎么回事。对于以下两种情况,我都弄不清:

的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();


小提琴与小提琴

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

无小提琴的小提琴

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

最佳答案

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

我发现与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();


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

至于为什么它不能与JavaScript一起使用:我不知道。您可能会研究smallipop的源代码(尽管目前看来离线)。 smallipop可能使用某些方法来覆盖其内容的click事件。

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

10-11 23:41