2012-10-05 33 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我會盡量更加明確。 –