Jump to content
  • 0

Подскажите пожалуйста.


Arinden
 Share

Question

Всем привет. Я совсем недавно начал изучать JavaScript, поэтому не знаю даже самых банальных вещей. Буду очень признателен, если подскажите один момент:

$("#button1, #button2, #button3").slideUp();

Как можно в данном случае сделать так, чтобы я мог внести исключение, скажем выполнять эту строку только для тех элементов, чей id не является this.id, при условии что this.id может быть, как button1, так и button2 или button3?

Рассчитываю на вашу компетентную помощь!...

Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

немного изменил твой код:

http://jsfiddle.net/gvx54/

http://jsfiddle.net/gvx54/1/

только в горизонтальном примере он встаёт на место исчезнувших, так как они вылетают из DOM'а, а во втором примере используем тэг br.

  • Like 1
Link to comment
Share on other sites

  • 0

немного изменил твой код:

http://jsfiddle.net/gvx54/

http://jsfiddle.net/gvx54/1/

только в горизонтальном примере он встаёт на место исчезнувших, так как они вылетают из DOM'а, а во втором примере используем тэг br.

Благодарю за помощь, попробовал прикрутить это к своему проекту. Дело в том, что у меня кнопки открывают слайд панели. Поэтому siblings нужно применять для вкладок содержимого. Я не знаю как мне объяснить... Мне нужно что-то такое, что будет сверять в начале this.id с элементами селектора, и если он там найден - убрать его из селектора. Тоесть $("#content1, #content2, #content3").slideUp(); если у нас var x имеет значение content1 - то селектор должен быть $("#content2, #content3").slideUp();, если content2, то только $("#content1, #content3").slideUp(); Это возможно?

Что нибудь вида:

if (this.id==="#content1") {

$("#content2, #content3").slideUp();

}

if (this.id==="#content2") {

$("#content1, #content3").slideUp();

}

if (this.id==="#content3") {

$("#content1, #content2").slideUp();

}

только более логичное, ведь кнопок же много....

Edited by Arinden
Link to comment
Share on other sites

  • 0

немного изменил твой код:

http://jsfiddle.net/gvx54/

http://jsfiddle.net/gvx54/1/

только в горизонтальном примере он встаёт на место исчезнувших, так как они вылетают из DOM'а, а во втором примере используем тэг br.

Благодарю за помощь, попробовал прикрутить это к своему проекту. Дело в том, что у меня кнопки открывают слайд панели. Поэтому siblings нужно применять для вкладок содержимого. Я не знаю как мне объяснить... Мне нужно что-то такое, что будет сверять в начале this.id с элементами селектора, и если он там найден - убрать его из селектора. Тоесть $("#content1, #content2, #content3").slideUp(); если у нас var x имеет значение content1 - то селектор должен быть $("#content2, #content3").slideUp();, если content2, то только $("#content1, #content3").slideUp(); Это возможно?

Что нибудь вида:

if (this.id==="#content1") {

$("#content2, #content3").slideUp();

}

if (this.id==="#content2") {

$("#content1, #content3").slideUp();

}

if (this.id==="#content3") {

$("#content1, #content2").slideUp();

}

только более логичное, ведь кнопок же много....

Покажи свой код. По нажатию на одни и теже кнопки панель исчезает и появляется??

Link to comment
Share on other sites

  • 0

Я сделал! И в этом мне помог .siblings() в том числе, спасибо! Если не сложно можете подсказать, как сделать, чтобы .click(function(event){ не выполнялся повторно пока не будет завершена анимация этой же функции от нажатия другой кнопки? Код не выкладываю, потому что там дремучий лес, и я просто не в состоянии объяснить что именно я там налепил и для чего.

Например:

$("#button1, #button2, #button3").click(function(event){

var x = this.id+'content';

$(x).slideDown("slow");

});

Если я нажму на button1 начнётся slideDown, и тут я передумаю и нажму button2, и анимация slideDown прервётся. Мне нужно чтобы функция на клик при повторном нажатии "ждала" завершения этой функции.

Edited by Arinden
Link to comment
Share on other sites

  • 0


var r = "null";
$("#button1, #button2, #button3").click(function(event){
if (r==="null" || r==="done") {
r = "wait";
var x = this.id+'content';
$(x).slideDown("slow", function(event) {
r = "done"; })
});

Вот я что придумал. Вопрос снимается. Благодарю за помощь! :)

  • Like 1
Link to comment
Share on other sites

  • 0

Я сделал! И в этом мне помог .siblings() в том числе, спасибо! Если не сложно можете подсказать, как сделать, чтобы .click(function(event){ не выполнялся повторно пока не будет завершена анимация этой же функции от нажатия другой кнопки? Код не выкладываю, потому что там дремучий лес, и я просто не в состоянии объяснить что именно я там налепил и для чего.

Например:

$("#button1, #button2, #button3").click(function(event){

var x = this.id+'content';

$(x).slideDown("slow");

});

Если я нажму на button1 начнётся slideDown, и тут я передумаю и нажму button2, и анимация slideDown прервётся. Мне нужно чтобы функция на клик при повторном нажатии "ждала" завершения этой функции.

Не уверен, что поможет, но попробуй объявить глобальную переменную

x = true

Далее в самом начале обработчика ставишь

if (x) {//здесь весь код обработчика}

в самом начале кода(но внутри if блока) обработчика выключаешь переменную

x=false

, а в самом конце(но внутри if блока) опять включаешь -

 x=true

Ха, мы минута в минуту опубликовали! :) Твой пример поизящнее, молодец!

Edited by DrStrangeLove
  • Like 1
Link to comment
Share on other sites

  • 0

Невероятно))) Спасибо, вы мне очень помогли, наставили на верный путь к решению проблемы, я так рад, что всё работает!

Что самое интересное, вы предложили практически тоже самое)... Телепатия..

Edited by Arinden
Link to comment
Share on other sites

  • 0

Невероятно))) Спасибо, вы мне очень помогли, наставили на верный путь к решению проблемы, я так рад, что всё работает!

Что самое интересное, вы предложили практически тоже самое)... Телепатия..

GMTA - Как говорят англичане в таких ситуациях - Great minds think alike :))

  • Like 1
Link to comment
Share on other sites

  • 0

Невероятно))) Спасибо, вы мне очень помогли, наставили на верный путь к решению проблемы, я так рад, что всё работает!

Что самое интересное, вы предложили практически тоже самое)... Телепатия..

GMTA - Как говорят англичане в таких ситуациях - Great minds think alike :))

Это точно))

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