2012-07-05 59 views
-1

我目前有代碼爲jQuery的鏈接。點擊選定的鏈接時,會打開對話框。

$('.dialog_link_add').click(function(){ 
    var row_id = $(this).parent().parent().attr('id'); 
    return false; 
} 

因爲對話總是讓窗口滾動到頂部(在Internet Explorer),我已經使用純JavaScript和實現方法老FASION方式找到解決這個。

onclick="function_call(this);return false;" 

...但它不工作。我現在怎麼發送「this」參數等於jQuery $(this)?

+0

直接回答你的問題,'的onclick = 「FUNCTION_CALL($(本));返回false;」',但爲了更好的解決方案,請參閱TJCrowder的答案。 – Matt 2012-07-05 09:45:23

+1

-1用於稍後更新問題並在7分鐘後提及您在IE中只有該問題 – Blaster 2012-07-05 09:50:26

回答

5

您實際詢問的問題的答案是:$(this)的原始等價物是this,但是以您給定的onclick的形式,它將成爲您傳遞給函數的參數。您可以繼續,如果你想使用jQuery在功能,只需接受元素作爲參數(因爲這是你如何通過它),然後就可以使用$()

function function_call(elm) { 
    var row_id = $(elm).parent().parent().attr('id'); 
    // ... 
} 

不過要完全原始DOM ::

function function_call(elm) { 
    var row_id = elm.parentNode.parentNode.id; 
} 

更在各種DOM規範和HTML5 API:

:您可以防止滾動你的jQuery版本,以同樣的方式:

$('.dialog_link_add').click(function(){ 
    var row_id = $(this).parent().parent().attr('id'); 
    return false; // <<============= 
}); 

在jQuery的處理程序,return false做了兩件事:

  1. 防止默認操作(所以在#形式的鏈接的情況下,它不會滾動窗口)。

  2. 防止事件冒泡DOM。

在DOM0式處理器(您onclick),return false阻止默認動作,但不停止冒泡。 More about return false in various types of handlers(編輯後的問題顯示了jQuery的處理程序,最初並不是有沒有return false。)

+0

我更新了問題。問題僅在IE – Ales 2012-07-05 09:46:57

+1

@Ales:這很不幸,請在第一次嘗試時正確解釋您的問題(因爲其他人正在給您的問題留出重要時間)。現在他將不得不修改或重寫他的答案,儘管+1 – Blaster 2012-07-05 09:48:53

+1

@Ales:我分開意識到我沒有真正回答你問的問題,所以我這樣做了。但我沒有看到IE瀏覽器會使用您提供的代碼進行滾動的任何原因。要做的更有用的事情是找出*爲什麼會發生並處理根本原因。 – 2012-07-05 09:52:29