所以,我在一个范围内创建了一个删除“按钮”,但由于某种原因,我无法启动.click()。有任何想法吗?我是jQuery的新手,我认为这是显而易见的。我在Chrome和Safari中测试过没有运气。
CSS:
.delete_button {
cursor:pointer;
color: #fff;
border: 1px solid #FFF;
border-radius: 15px;
background: #AAA;
font-size: 8px;
line-height: 0px;
padding: 0px 2px 0px 2px;
}
HTML / PHP:
<span class="delete_button" id="delete_<? echo $some_id; ?>">X</span>
jQuery:
$(document).ready(function() {
$('.delete_button').click(function() {
var transaction_id = $(this).attr('id').replace('delete_','');
alert("Delete transaction #" + transaction_id);
return false;
});
});
答案 0 :(得分:77)
使用.on()
由于您的跨度是动态添加的,因此在DOM就绪或页面加载时不会出现。
所以你必须使用Event Delegation
语法
$( elements ).on( events, selector, data, handler );
像这样
$(document).on('click','.delete_button',function(){
// code here
});
或
$('parentElementPresesntAtDOMready').on('click','.delete_button',function(){
// code here
});
您的代码变为
$(document).ready(function () {
$(document).on('click', '.delete_button', function () {
var transaction_id = $(this).attr('id').replace('delete_', '');
alert("Delete transaction #" + transaction_id);
return false;
});
});
答案 1 :(得分:11)
似乎动态创建了span,您需要使用事件委派。将其绑定到最近的静态父级或文档
$(document).on('click','.delete_button',function(){
/*Your code*/
});
答案 2 :(得分:0)
对于旧的Webkit,有一个更简单的解决方案:通过CSS将光标设置为跨度的指针。 经过测试并可以在音乐网络应用上使用。