Dies ist in der Tat falsch. 'on' Callback erwartet [http://api.jquery.com/on/] ein Event als ersten Parameter. In der aktuellen Form hat Ihr Code keine Chance zu arbeiten, da myFunc ('param') keine Funktion ist (es ist das Ergebnis seiner Bewertung).
Sie können einfach Ihre innere Funktion auf diese Weise wickeln:
$(document).on('click', '#my', function() { myFunc('param'); });
function myFunc(param){
//do something
}
aber wenn Sie richtig wollen jquery in diesem Handler verwenden, benötigen Sie diese binden:
$(document).on('click', '#my', function() { myFunc.bind(this)('param'); });
function myFunc(param){
//do something
}
Sie auch machen könnte Ihre Funktion gibt eine andere Funktion zurück:
$(document).on('click', '#my', myFunc('param'));
function myFunc(param){
return function() {
};
}
Hier ist eine komplette Geige
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>
Wow wusste das nicht! –