2012-10-05 37 views
0

我的页面有一个小部件。如果我点击小部件的任何部分,它应该导航到下一页,其中有关于该小部件的一些细节。我需要打开一个对话框,如果我点击该窗口小部件中名为“likes”的跨度。而是它被导航到即使我点击这个链接下页..在jquery中点击功能需要帮助

应该导航到下一个页面,如果我上,除了连接小部件的任何部位点击..

这是正常的代码对于点击:

$('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"> 

这是我想什么:如果停止事件的传播

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

    // ... 
}); 
+0

我张贴使用条件的答案。问题是,即使你点击跨度,事件将不会被处理,直到它被传播到'div.streamcontenttopmain''元素,在这一点'this''将会是div而不是跨度 –

回答

2

可以向上冒泡到div元素和触发它们的事件处理程序停止的事件你可以在没有达到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 
}); 
1

$('td#' + parentElement).find('div.streamcontenttopmain').click(function (e) { 

      if ($(this).hasClass("flft likes")) { 

       alert("hi"); 
      } else { 
       window.location.href = 'TaskDetails.aspx?id=' + 
           json_row.id + 
           '&community=' + 
           getQueryParam('community'); 
      } 
     }); 
+0

我已经编辑了我的问题ü提到的方式..我试图以同样的方式但仍保持不变.. 我要补充什么了...... – Xavier

+0

@Xavier原来的答案,我写了一个大错误(见注释到为什么质疑)这其中扩展了搅拌机的答案,如果我理解你的问题和上下文正确 –

1

你也可以这样做:

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

我发现它在这个演示:http://jsfiddle.net/SxhWy/3/

+0

但是会工作,我已经试过ü提到的方式..但它抛出一个异常,如: “控制台未定义” – Xavier

+0

@Xavier我删除了这条线,只有我需要追踪字段的确切名称。 –

+0

@RuneFS我会尽量更加明确。 –