jQuery .on('click',..不会在safari中触发

时间:2013-04-02 08:53:09

标签: jquery safari click

我有这些动态添加到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>标记中。

2 个答案:

答案 0 :(得分:2)

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

所以在CSS中我做了:

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

现在光标是一个指针,点击处理程序可以正常工作。

不知道为什么......

答案 1 :(得分:0)

这样的事情是正确的。

$('.deleteRow').on('click', function() { 
  $(this).parents('tr:first').remove();
});