Вызывающая функция на селекторе jquery
Хорошо, обычно я бы считал себя промежуточным пользователем jquery, но это кажется очень проблемой noob, что я не совсем уверен, как кодировать.
У меня есть один div, с которым я хочу запустить функцию. Единственный способ, которым я знаю, как это сделать, - это что-то вроде...
$("#divname").each(function(){
dostuff();
});
Кажется, это немного больше, когда я знаю, что будет только один элемент. Я пробовал это...
$("#divname", function(){
console.log($(this));
});
... но он выписывает весь дом. Я просто хочу запустить функцию на этом одном элементе. Как это сделать?
Ответы
Ответ 1
Если вы утверждаете, что каждый элемент в HTML DOM имеет уникальный id
, это означает, что ни один из двух элементов не имеет одинакового id
, тогда $('#divname')
всегда возвращает один элемент, а $('#divname').each()
будет выполняться один раз. не более одного.
Теперь в вашем случае вы хотите что-то вроде
dosomething( $('#divname') );
Например:
function doSomething( el ) {
el.append('<span>hello</span>');
}
doSomething( $('#divname') );
DEMO
Ответ 2
Вы должны вызвать функцию, передав свой элемент в качестве своего объекта:
function doStuff() {
alert( $(this).html() );
}
doStuff.call( $("#foo")[0] );
В связи с тем, как мы построили и вызываем doStuff
, мы все еще можем использовать его в качестве обратного вызова на .each
:
$(".bar").each( doStuff );
Fiddle: http://jsfiddle.net/jonathansampson/WuyJc/