1

我想在所有record_rowdiv onclick 的基础上执行一项操作。我正在这样做$('.record_row').live("click",function(){})。在 record_row div 里面我放option_icon了我放了一张图片的 div。我已经阻止了记录 onclick by onclick="event.cancelBubble = true;"。它可以正常使用$('.option_icon').click(function(){})但不能使用$('.option_icon').live("click",function(){})功能。

有什么建议么?提前致谢。

html:-

<div id="container">
    <ul>
        <li><div id="data_item_1" class="record_row">
                User record displayning here
                <div class="option_icon" onclick="event.cancelBubble = true;">
                    -----
                </div>  
            </div>  
        </li>   
        <li>
            <div id="data_item_2" class="record_row">
                 .........
                <div class="option_icon" onclick="event.cancelBubble = true;">
                    -----
                </div>  

            </div>  
        </li>
    </ul>
</div>

jQuery:-

$('.record_row').live("click",function(){
    -----------
    -----------
    // working fine
});   

$('.option_icon').live("click",function(e){
       e.stopPropagation();
    -----------
    -----------
    // Not working
}); 
4

2 回答 2

0

对于您的第一个处理程序,使用 jQuery 事件对象的target属性检查事件的来源。由于它也可能起源于 的子级div.option_icon,因此您可以使用该closest方法来确定它是否位于其中的某个位置<div>

$('#container').on('click', '.record_row', function (e) {

    // if event bubbled up from .option_icon, ignore
    if ( $(e.target).closest('.option_icon').length > 0 ) return;

    //your code here...

});

您的第二个处理程序将只是

$('#container').on('click', '.option_icon', function () {
    //your code here...    
});

此外,从 HTML 标记中删除 onclick 事件处理程序

于 2013-02-06T14:54:11.193 回答
0

我会尝试像这样处理点击事件:

$(document).on('click', '.option_icon', function(ev){
    ev.stopPropagation();
    ev.cancelBubble = true;

    -----------
    -----------
    // Not working
});

您可以在此处找到有关此的更多信息

于 2013-02-06T14:35:43.557 回答