需要jquery中单击功能的帮助吗

需要jquery中单击功能的帮助吗,jquery,click,Jquery,Click,我的页面中有一个小部件。如果我点击小部件的任何部分,它应该导航到下一个页面,其中有关于该小部件的一些详细信息。我需要打开一个对话框,如果我点击了一个名为“喜欢”的小部件内可用的跨度。但是,即使我点击了该链接,它也会导航到下一页 如果我单击小部件的任何部分(除了该链接),它应该导航到下一页 这是单击的正常代码: $('td#' + parentElement).find('div.streamcontenttopmain').click(function() { wind

我的页面中有一个小部件。如果我点击小部件的任何部分,它应该导航到下一个页面,其中有关于该小部件的一些详细信息。我需要打开一个对话框,如果我点击了一个名为“喜欢”的小部件内可用的跨度。但是,即使我点击了该链接,它也会导航到下一页

如果我单击小部件的任何部分(除了该链接),它应该导航到下一页

这是单击的正常代码:

 $('td#' + parentElement).find('div.streamcontenttopmain').click(function() {
            window.location.href = 'TaskDetails.aspx?id=' + json_row.id + '&community=' + getQueryParam('community');
        });
如果我单击小部件中的任何位置,此代码将导航到下一页

我的跨度定义如下:

<span class="flft likes" style="MARGIN-LEFT: 2px">

您可以阻止事件冒泡到
div
元素并触发其事件处理程序:

$('#' + parentElement).find('span.likes').click(function(e) {
    e.stopPropagation();

    // ...
});

您可以阻止事件冒泡到
div
元素并触发其事件处理程序:

$('#' + parentElement).find('span.likes').click(function(e) {
    e.stopPropagation();

    // ...
});

如果您停止事件的传播,您可以在span中处理它,但它永远不会到达div。这将类似于下面的内容

$('td#' + parentElement).find('div.streamcontenttopmain').click(function(e){
      window.location.href = 'TaskDetails.aspx?id=' + 
                               json_row.id + 
                               '&community=' + 
                               getQueryParam('community');
})).find('span.likes').click(function(e) {
           e.stopPropagation();
           //do the span specific stuff here
});

如果您停止事件的传播,您可以在span中处理它,但它永远不会到达div。这将类似于下面的内容

$('td#' + parentElement).find('div.streamcontenttopmain').click(function(e){
      window.location.href = 'TaskDetails.aspx?id=' + 
                               json_row.id + 
                               '&community=' + 
                               getQueryParam('community');
})).find('span.likes').click(function(e) {
           e.stopPropagation();
           //do the span specific stuff here
});

您还可以执行以下操作:

$(document).ready(function(){
    $('div').click(function(e){
        if(e.toElement.nodeName == "SPAN")
            alert('span clicked');
        else
            alert('div clicked');
    });
});

我在这个演示中展示了它:

您还可以执行以下操作:

$(document).ready(function(){
    $('div').click(function(e){
        if(e.toElement.nodeName == "SPAN")
            alert('span clicked');
        else
            alert('div clicked');
    });
});

我在这个演示中展示了它:

我已经尝试了你提到的方法。。但它抛出了一个异常:“console未定义”@Xavier我删除了这一行,它只需要我跟踪字段的确切名称。@RuneFS我会尽量更明确。我已经尝试了你提到的方法。。但它抛出了一个异常:“console未定义”@Xavier我删除了这一行,它只需要我跟踪字段的确切名称。@RuneFS我会尽量更明确。我已经按照你提到的方式编辑了我的问题。。我也用同样的方法试过,但还是一样。。我还需要补充什么吗…@Xavier我写的原始答案是一个错误(参见问题的评论了解原因),这扩展了Blenders的答案,但是如果我理解了你的问题并更正了上下文,我会按照你提到的方式编辑我的问题。。我也用同样的方法试过,但还是一样。。我是否应该补充更多…@Xavier我最初的回答是一个错误(参见问题的评论了解原因),这扩展了Blenders的回答,但是如果我理解了你的问题并更正了上下文,我会使用条件发布答案。问题是,即使单击span,事件也不会被处理,直到它传播到“div.streamcontenttopmain”元素,此时
将是div,而不是spanI使用该条件发布答案。问题是,即使单击span,事件也不会被处理,直到它传播到'div.streamcontenttopmain'元素,此时
将是div而不是span