Jump to content
  • 0

процедуры в Jquery


choppylion
 Share

Question

всем привет. так как с Jquery не знаком, но есть надобность использовать его для сайта, возник вопрос, как задать процедуру? чтобы просто ее вызывать, а не копировать код. Заранее спасибо

Вот этот код надо задать как процедуру:

var selectBoxContainer = $('<div>',{

width : select.outerWidth(),

className : 'tzSelect',

html : '<div class="selectBox"></div>'

});

var dropDown = $('<ul>',{className:'dropDown'});

var selectBox = selectBoxContainer.find('.selectBox');

// Цикл по оригинальному элементу select

select.find('option').each(function(i){

var option = $(this);

if(i==select.attr('selectedIndex')){

selectBox.html(option.text());

}

// Так как используется jQuery 1.4.3, то мы можем получить доступ

// к атрибутам данных HTML5 с помощью метода data().

if(option.data('skip')){

return true;

}

// Создаем выпадающий пункт в соответствии

// с иконкой данных и атрибутами HTML5 данных:

var li = $('<li>',{

html: '<img src="'+option.data('icon')+'" /><span>'+

option.data('html-text')+'</span>'

});

li.click(function(){

selectBox.html(option.text());

dropDown.trigger('hide');

// Когда происходит событие click, мы также отражаем

// изменения в оригинальном элементе select:

select.val(option.val());

return false;

});

dropDown.append(li);

});

selectBoxContainer.append(dropDown.hide());

select.hide().after(selectBoxContainer);

// Привязываем пользовательские события show и hide к элементу dropDown:

dropDown.bind('show',function(){

if(dropDown.is(':animated')){

return false;

}

selectBox.addClass('expanded');

dropDown.slideDown();

}).bind('hide',function(){

if(dropDown.is(':animated')){

return false;

}

selectBox.removeClass('expanded');

dropDown.slideUp();

}).bind('toggle',function(){

if(selectBox.hasClass('expanded')){

dropDown.trigger('hide');

}

else dropDown.trigger('show');

});

selectBox.click(function(){

dropDown.trigger('toggle');

return false;

});

// Если нажать кнопку мыши где-нибудь на странице при открытом элементе dropDown,

// он будет спрятан:

$(document).click(function(){

dropDown.trigger('hide');

});

});

Link to comment
Share on other sites

21 answers to this question

Recommended Posts

  • 0
Скажите, а где вы учились программированию? По каким книжкам? Просто функции процедурами уже мало кто называет, как-то это понятие выходит из обихода...

Смею заметить, что процедура != функции

Link to comment
Share on other sites

  • 0
а как же void?

Изложу, как я это помню. Если говорить упрощённо, то функция — это такой кусок программы, который живёт сам по себе, а процедура — более связана с программой. То есть, если совсем упрощенно, то работа функции никак не влияет на переменные, её окружающие, за исключением той, которой присваивается её результат (ну и тех, которые были переданы по ссылкам), а процедура же, хоть сама по себе ничего и не возвращает всё равно влияет на переменные в программе. Примеры

function func(a, b, c) {c=a+b; return c;}
a=1; b=2; c=0;
func(a, b, c); // Переменная c не меняет значения

procedure proc(a, b, c) {c=a+b;}
a=1; b=2; c=0;
proc(a, b, c); // Переменная c станет равна трём

Вот как-то так всё.

Использование void всего лишь указывает функции, что значение возвращаться не будет (в PHP и JS вообще ничего укзывать не надо, не хочешь возвращать — не возвращай), но функция остаётся функцией и не производит никакого действия с переменными вне её. Хотя в JS, как всегда, всё немного иначе, но JS это вообще какой-то странный язык, даже более странный, чем PHP.

Link to comment
Share on other sites

  • 0
Изложу, как я это помню. Если говорить упрощённо, то функция — это такой кусок программы, который живёт сам по себе, а процедура — более связана с программой. То есть, если совсем упрощенно, то работа функции никак не влияет на переменные, её окружающие, за исключением той, которой присваивается её результат (ну и тех, которые были переданы по ссылкам), а процедура же, хоть сама по себе ничего и не возвращает всё равно влияет на переменные в программе. Примеры

function func(a, b, c) {c=a+b; return c;}
a=1; b=2; c=0;
func(a, b, c); // Переменная c не меняет значения

procedure proc(a, b, c) {c=a+b;}
a=1; b=2; c=0;
proc(a, b, c); // Переменная c станет равна трём

Стой дружище, ты не прав!

Вот тут "с" тоже будет ноль.

function func(a, b, c) { c = a + b;}
var a=1; var b=2; var c=0;

func(a, b, c);
alert(c);

А почему, я не могу понять, объясни плиз. :)

Link to comment
Share on other sites

  • 0
Стой дружище, ты не прав!

Вот тут "с" тоже будет ноль.

function func(a, b, c) { c = a + b;}
var a=1; var b=2; var c=0;

func(a, b, c);
alert(c);

А почему, я не могу понять, объясни плиз. :)

Внутри функции "с" будет не глобальная переменная, а параметр функции в ее локальной зоне видимости переменных.

Link to comment
Share on other sites

  • 0
Погоди, как же так, ведь мы же его передаём?

Передается значение.

Сидит врач на приеме и говорит, что первый пациент у меня будет называться Вася, а второй - Маша.

Заходит дама преклонных лет и говорит: "Я - Зинаида Петровна". А доктор ей: "Здарова, Вася".

Дальше доктор проводит осмотр тела, а не имени Зинаида Петровна. Ему пофиг как именно оно называется, для него это всего лишь пациент по имени Вася.

Link to comment
Share on other sites

  • 0
Передается значение.

Сидит врач на приеме и говорит, что первый пациент у меня будет называться Вася, а второй - Маша.

Заходит дама преклонных лет и говорит: "Я - Зинаида Петровна". А доктор ей: "Здарова, Вася".

Дальше доктор проводит осмотр тела, а не имени Зинаида Петровна. Ему пофиг как именно оно называется, для него это всего лишь пациент по имени Вася.

Т.е. выходит, что функция внутри работает только со своими параметрами и при этом даже не смотря на то, что они совпадают с внешними переменными, на них никак не влияет?

Link to comment
Share on other sites

  • 0
Никак. Все, что внутри функции (кроме глобальных переменных) никак не влияет на то что снаружи.

Но ведь внутренности совпадают с фактически являются наружными переменными?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy