1

我有这些动态添加到 html 表中的图标。其中之一是垃圾桶。当它被点击时,该行应该被删除。

在开发过程中,我在 Firefox、Chrome 和 IE 中对其进行了测试,一切都像魅力一样。但是现在有一个 Safari 用户注意到在 Safari 中根本没有触发点击。我下载并安装了最新版本的 Safari for Windows 来检查自己,单击垃圾桶图标时确实没有任何反应。

奇怪的是,该页面在 Safari 中完美运行的其他元素上有更多的点击事件。

它们都使用 .on() 和 .off()。(有些只是 .click() )。

我的代码:

/**
 * Delete row from html table 
 */
$(document).on('click', '.deleteRow', function() {
    $('#row_' + $(this).attr('id').substr(4)).remove();
});

如您所见,jQuery 代码并不复杂。有谁知道为什么它在 Firefox、Chrome 和 IE 中有效,而在 Safari 中无效?

编辑:此外,我注意到 Safari 中的另一个奇怪行为。在 CSS 中,我将光标设为指针。再次,除 Safari 之外的所有浏览器都正确添加了 CSS 规则。具有类 .deleteRow 的标签是一个<i>标签..

编辑:

html = '<tr class="rowDomain" id="row_'+domain+'_'+ext+'">';
html += '<td class="get"><input type="hidden" name="hdnDomains[]" value="'+domain+'_'+ext+'_'+a+'_'+term+'_'+data.price+'" />'+domain+'.'+ext+' '+stars+'</td>';
html += '<td class="'+a+'">'+b+'</td>';
html += '<td>'+term+' jaar</td><td>&euro; '+(parseFloat(data.price).toFixed(2)).toString().replace('.',',')+'</td>';
html += '<td><i class="deleteRow icon-trash" id="btn_'+domain+'_'+ext+'" title="Verwijder domein uit selectie."></i></td>';
html += '</tr>';
$('#tblDomains').append(html);

<table>以上是每次用户单击按钮时添加到我的 HTML 。该图标位于最后一个<td>标签中。

4

2 回答 2

2

我找到了解决方案。我猜这与我使用的标签类型有关。<i>如果我在标签的背景上添加颜色,它就可以工作。

所以在CSS中我做了:

.deleteRow {background-color:rgba(255,255,255,0.1);}

现在光标是一个指针,点击处理程序完成了它的工作。

虽然不知道为什么...

于 2013-04-02T09:58:16.017 回答
0

这样的事情将是正确的..

$('.deleteRow').on('click', function() { 
  $(this).parents('tr:first').remove();
});
于 2013-04-02T09:46:45.313 回答