Я определяю функцию func1 (); я хочу, чтобы это взяло некоторый параметрический усилитель (усилители) т.е.
var func1(aaa, bbb){
//do something, anything!
};
затем я хочу назвать его позже в документе чем-то вроде этого:
$('#some_id').click(func1($this));
но не работа.
Я смешивал с ним некоторое время, но его очень странное путь jquery/javascript обрабатывает определяемые пользователем функции мне, по крайней мере. some1 может предоставить мне простой фрагмент кода? Спасибо
Если все, что вы хотите передать, это $ (this)
, вам не нужен параметр, так как он будет доступен внутри определенной функции.
$('#some_id').click(func1);
Однако вы не можете добавлять такие параметры:
$('#some_id').click(func1(param1, param2));
Тогда для определения вашей функции у вас будет просто
function func1() { }
Если вам нужны параметры, отличные от $ (this), вам нужно будет сделать следующее:
$('#some_id').click(function () {
func1(aaa, bbb); });
Полагаю, вы пытаетесь убедиться, что this
по-прежнему ссылается на элемент, получивший событие.
Попробуйте: http://jsfiddle.net/jKM9s/
$('#some_id').click(function() {
func1.call(this, 'somearg', 'somearg');
});
// now "this" references the element when func1 is called
function func1(aaa, bbb){
//do something, anything!
};
РЕДАКТИРОВАТЬ:
Если все, что вам нужно, это ссылка на выбранный элемент, то сначала см. @ phoffer's решение.
Вот быстрый пример:
Убедитесь, что вы определили свою функцию с помощью function
. Затем, если вы хотите вызвать его из jQuery, , вы должны использовать встроенную функцию в click ()
.
<div>Click Me!</div>
<div>Pick this one!</div>
<script type="text/javascript">
function func1(aaa, bbb)
{
alert('You clicked the DIV that said: "' + aaa.innerHTML + '" and ' + bbb);
};
$('div').click(function ()
{
func1(this, "that's ok.");
});
</script>
В Javascript нельзя одновременно назначать функцию и передавать аргументы. Используйте анонимную функцию ...
$('#some_id').click(function() {
var arg1 = $(this);
var arg2 = 'whatever';
return func1(arg1, arg2);
});
Если вам нужен только параметр this
, назначьте ссылку на функцию ...
$('#some_id').click(func1);
Вы не можете сделать это как $('#some_id').click(func1($this));
из-за определения .click(handler(eventObject))
. ... если вы вызовете его таким образом, $this
в func1($this)
будет ожидаться как eventObject
.
для этого можно использовать .bind()
и event.data
.
пример...
function sum(event) {
alert(event.data.x + event.data.y);
// `this` here would refer to the element calling this function
// for example, $(this).attr('id') would return `someID` if called below
}
назовите это как
$('#someID').bind('click',{x:4, y:5}, sum);