2011-10-14 27 views
34

Tôi có dòng mã như thế này:

$(this).parent().parent().children().each(function(){ 
    // do something 
}); 

Nó hoạt động tốt. Nhưng tôi cần phải chạy những dòng này nhiều lần. Vì vậy, tôi đã tạo một hàm và chuyển tham số $ (this) này cho một hàm:

myFunc($(this)); 

function myFunc(thisObj) { 
    thisObj.parent().parent().children().each(function(){ 
     // do something 
    }); 
} 

Nhưng theo cách này, nó không hoạt động.

+1

Nếu bạn sử dụng "this" thay vì "$ (this)" làm thông số thì sao? – Rob

+2

Không có gì sai với mã của bạn như được viết, vì vậy tôi đề nghị đó là lỗi ở một nơi khác. Ý của bạn là gì, "Nó không hoạt động"? –

+0

"Nó không hoạt động"? –

Trả lời

45

bạn có thể kiểm tra liên kết này.

http://jsfiddle.net/zEXrq/38/

$("#f").click(function() { 
 
    myFunc($(this)); 
 
}) 
 

 
function myFunc(thisObj) { 
 
    thisObj.parent().parent().children().each(function() { 
 
    alert("childs") 
 
    }); 
 
}
<div id="wordlist"> 
 
    <div id="a"></div> 
 
    <div id="b"> 
 
    <div id="e"></div> 
 
    <div id="f">child</div> 
 
    </div> 
 
</div> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

7

jQuery sẽ tự động gọi hàm của bạn với bối cảnh thích hợp thiết lập.

$('#button').on('click', myFunction); 

function myFunction() { 
    var that = $(this); 
    console.log(that); 
} 
Các vấn đề liên quan