これは確かに間違っています。 'on'コールバックは、最初のパラメータとしてイベントを受け取ります。現在のフォームでは、myFunc( 'param')は関数ではないため、コードは機能しません(評価の結果です)。
あなたは、単にこのようあなたの内側の機能をラップすることができます
$(document).on('click', '#my', function() { myFunc('param'); });
function myFunc(param){
//do something
}
いますが、正しくそのハンドラでjqueryのを使用したい場合は、あなたがこれをバインドする必要があります。
$(document).on('click', '#my', function() { myFunc.bind(this)('param'); });
function myFunc(param){
//do something
}
あなたはまた作ることができますあなたの関数は別の関数を返します:
$(document).on('click', '#my', myFunc('param'));
function myFunc(param){
return function() {
};
}
ここに完全なフィーダ
function myFunc1(p) {
return function() {
$(this)[0].innerHTML = "modified by " + p;
};
}
function myFunc2(p) {
$(this)[0].innerHTML = "modified by " + p;
}
$(document).on("click", "#one", myFunc1("inner wrapping"));
$(document).on("click", "#two", function() { myFunc2.bind(this)("outer wrapping");});
div {
width: 300px;
background-color: yellow;
text-align: center;
margin-top: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="one">one</div>
<div id="two">two</div>
うわーはこれを知らなかった! –