2017-07-04 56 views
-1

獲取處理器中()方法

$(document).ready(function() { 
 

 
    $('#handler').on('click', '.selector', function(){ 
 
    alert($(this).text()); 
 
    }); 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="handler"> 
 
    handler content 
 
    <a href="#" class="selector">selector content</a> 
 
</div>

如何獲得on方法裏面#handler沒有明確規定呢?

+0

@JaromandaX而不指定明確ofcourse。 – 3zzy

+0

@SpencerWieczorek我想都。 – 3zzy

+0

@ 3zzy爲什麼不明確?如果不是明確的話,你會有更多的代碼來寫... – Li357

回答

3

使用事件「delegateTarget」屬性

$(document).ready(function() { 
    $('#handler').on('click', '.selector', function(e){ 
     console.log(e.delegateTarget); 
    }); 
}); 

工作實施例: -

$(document).ready(function() { 
 
    $('#handler').on('click', '.selector', function(e){ 
 
     console.log(e.delegateTarget); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="handler"> 
 
    handler content 
 
    <a href="#" class="selector">child</a> 
 
    <div> 
 
    <a href="#" class="selector">grand child</a> 
 
    </div> 
 
    <div> 
 
    <div> 
 
     <a href="#" class="selector">great grand child</a> 
 
    </div> 
 
    </div> 
 
</div>

+0

這一個好多了。+ 1.我增加了工作示例部分。希望沒關係。 –

+0

感謝使它成爲工作片段@AlivetoDie - (正要去,但分散注意力):p –

+0

不客氣。但它會在嵌套的兒童案件中起作用嗎?(意味着無論父內部有多少嵌套元素,也不管它在父元素內部點擊的位置,是否始終獲得第一個父元素?) –

1

在這種特殊情況下,你可以直接使用的唯一的ID,你有

$("#handler"). 

在情況下,如果這是一個類,你必須$(this).parent()到頂層。

你可以將它鏈接到第n級,直到你到達頂部。 $(this).parent().parent() ...

或者因爲你知道這個選擇,你可以做$(this).parents("selector")

+0

在這個小例子中,它是一個直接的父代。 – 3zzy

+0

@ 3zzy那麼,更新了我的答案。 –

+0

或使用'.parents('SOME_SELECTOR')' –

0

使用closest()如果家長有層次,

$(this).closest('div') 

,並使用parent()如果目標元素的直接父,

$(this).parent('div'); 

而選擇器是獨一無二的,並有像handler id,那麼是ST選項是

$('#handler') 
-1

更改爲

$(document).ready(function() { 
    $('#handler').on('click', function(){ 
    //$(this) here will be #handler. 
    }); 
}); 

或者,如果你仍然希望函數火的時候,有人點擊.selector那麼你可以做以下

$(document).ready(function() { 
    $('#handler').on('click', '.selector', function(){ 
    var handler = $(this).parent(); 
    }); 
}); 
+0

第二個是對的。第一個不需要OP.he特別要求,在點擊孩子後如何得到父母selector.remove第一個從你的答案。我可以做到這一點,但我不想爲第二個+1 –