次のようなコード行があります。
$(this).parent().parent().children().each(function(){
// do something
});
うまくいきます。しかし、これらの行を複数回実行する必要があります。したがって、関数を作成し、関数に$(this)パラメーターを渡しました。
myFunc( $(this) );
function myFunc(thisObj) {
thisObj.parent().parent().children().each(function(){
// do something
});
}
しかし、この方法では、うまくいきませんでした。
このリンクを確認できます。
$("#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>
jQueryは適切なコンテキストセットで関数を自動的に呼び出します。
$('#button').on('click', myFunction);
function myFunction() {
var that = $(this);
console.log(that);
}
競合なしモード (つまり、グローバルスコープ外)で作業している場合、可能性の1つは次のとおりです。
jQuery.noConflict();
(function ($) {
$('#button').on('click', myFunction);
}(jQuery));
// or
jQuery('#button').on('click', myFunction);
function myFunction() {
var that = jQuery(this);
console.log(that);
}
Idを関数に渡すことができます。関数内のループで。
myFunc(this.id);
function myFunc(thisid) {
$("#" + thisid).parent().parent().children().each(function(){
// do something
});
}
私は通常、次のような関数の外側でループを行います:
$(this).parent().parent().children().each(function(){
myFunc(this.id)
});
function myFunc(thisid) {
// do something example
$("#" + thisid).html("Yay, i changed the html for element: " + thisid);
}