jQuery Overview Homework


8

Ето и домашното по тази тема, втората задача беше на практика преправяне на предишното домашно с jQuery.

За да спестя евентуално на някого чудене и ровене - един от тестовете не минава, ако се ползва функция .show() вместо .css('display', ''), защото явно show() слага директно 'block' на дисплей, а тестът търси ''.




Отговори



0

Здравейте, 

това ми е кода по задача 2. Привидно всичко изглежда ОК, но тестовете не минават. Ако някой може да ми каже защо, ще черпя една бира в тая жега :)


от vasil.subeff (80 точки)


0

Предполагам, че е защото в момента на който и .button да кликнеш, крие и показва един и същ .content (първия), а по условия трябва да крие първия .content след .button, който е кликнат и преди друг .button.

При мен се получи с едни доста неприятни на вид проверки, които най-вероятно могат да се оптимизират някак :) но можеш да ги погледнеш да добиеш представа


от topalkata (6442 точки)

2

също така използваш class (.hidden), която за тестовете няма как да стане...

На node/iojs няма CSS и нещата трябва да ги правиш с $item.css('display', '...')


от DonchoMinkov (12706 точки)



1

Здравей

Имам една забележка за която не съм сигурна дали е ок. Поне във условието е казано:'If there isn't a .content element after the clicked .button and before other .button, do nothing,  незнам дали трябва когато натиснеш примерно първия бутон след които има друг бутон, да се случва нешто. Аз разбрах че не трябва.


от Aleksandra92 (130 точки)


1
И аз не съм сигурен, но доколкото разбрах, няма значение какво има помежду им, само .content елемента да е след кликнатия .button и преди друг .button, тоест като кликнеш на последния .button например, с .content-a след него да не се случва нищо, защото няма после друг .button...

от topalkata (6442 точки)


0

от divided.zero (692 точки)


1
Всичко е ок, то така си работи коректно, просто този uncaught error, който ти дава е твоят, който хвърляш, ако селекторът нищо не е избрал, а той нищо не е избрал, защото в html-a функцията се вика с ('root'), вместо с ('#root') и съответно нищо не избира, .length на this във функцията ти е 0 и съответно хвърля грешка. Ако добавиш в скобите на грешката някакъв стринг, ще си го видиш в конзолата

от topalkata (6442 точки)

0
Ей човек три часа не се усещам че в html-a ми идва 'root' вместо '#root' .. душата ми изпи туй н'што

от divided.zero (692 точки)


2
Това е моята имплементация

от lnikod4s (6538 точки)


1
Ето и моето.

от AsyaHristeva (98 точки)


1

Ето още един вариант на домашното: Task-1.js   Task-2.js .


от M.Yankov (1418 точки)


0
var clicked = $(this);

А при мен не работи var nextContent = clicked.next('.content');
Работи var nextContent = clicked.nextAll('.content:first');
Аз ли бъркам нещо?


от chezza (314 точки)


1
.next(selector) търси да е веднага след clicked независимо че имаме нов селектор а там има .button

от TodorDimitrov (757 точки)

0

Благодаря ти:) и  и да добавя:

Find the very next sibling of each paragraph. Keep only the ones with a class "selected".

$( "p" ).next( ".selected" ).css( "background", "yellow" );


от chezza (314 точки)


4

Моите опити с jQuery - ТУК. :) (На абсолютно един и същи код ми се случи да ми дава последователно грешни и верни резултати от тестовете - предполагам, че е във връзка с времето за изпълнение, което на съответния тест ми е малко над 200ms, в случаите, в които минава, хаха. В общия случай работи, затова и го пускам. :))


от dentia (12519 точки)


2
Ето го и моето домашно. Доста се поизтормозих с два от тестовете, но... най-накрая вече всичко работи правилно. :)

от IlianaB (1137 точки)


2

Може да намерите моето домашно ТУК

Като втора задача намирането на нужния ни елемент би трябвало да работи винаги (аз тествах около 10 пускания) коректно само с един ред код :)

$nextEl = $targetEl.nextUntil('.button').filter('.content').first();


от c.l.angelov (510 точки)