Подтвердить что ты не робот

Вызывающая функция на селекторе jquery

Хорошо, обычно я бы считал себя промежуточным пользователем jquery, но это кажется очень проблемой noob, что я не совсем уверен, как кодировать.

У меня есть один div, с которым я хочу запустить функцию. Единственный способ, которым я знаю, как это сделать, - это что-то вроде...

$("#divname").each(function(){
  dostuff();
});

Кажется, это немного больше, когда я знаю, что будет только один элемент. Я пробовал это...

$("#divname", function(){ 
  console.log($(this));
});

... но он выписывает весь дом. Я просто хочу запустить функцию на этом одном элементе. Как это сделать?

4b9b3361

Ответ 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/