jQuery Overview Homework


8

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

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




Отговори



0

Това ми се струва добре, но не крие content-a. Какво пропускам?

return function (selector) { if (typeof(selector) !== 'string') { throw new Error(); } var selector = $(selector), buttons = $('.button'), content = $('.content'), len; buttons.text('hide'); // Add event to each button buttons.on('click', clickedItem); function clickedItem(event) { var clickedButton = $(event.target), contentElement = clickedButton.next(); while (contentElement.hasClass('button')) { contentElement = contentElement.next(); } if (contentElement.css('display') === 'none') { contentElement.css('display', ''); clickedButton.text('hide'); } else { contentElement.css('display', 'none'); clickedButton.text('show'); } } };


от Bruno (921 точки)


1

Здравей, ако разгледаш ХТМЛ-то ще видиш, че след елементите .button има един br. Реално след while цикъла за contentElement остава селектиран br елемента, а не content-а, който е след него. Няма да стане с това условие в while цикъла. СЛедната корекция работи:

while( !contentElement.hasClass('content'))


от todorm85 (1347 точки)

0

Здрасти! 

Забелязах <br> таговете, но не се замислих дали и как влияят. И става:

contentElement = clickedButton.next();  // Избираме елемента след текущия(който е тип "линк" с клас 'button')

while( !contentElement.hasClass('content')) // Ако елемента няма клас 'content' 

contentElement = contentElement.next();  // избери този след него и т.н.

Хитро, но и малко завъртяно. Мерси. :)

----------

Към topalkata:

Като пробвам твоето решение, линковете за кликане не излизат на страницата. В конзолата излиза:
throw 'invalid selector'; Uncaught invalid selector

Като махна тази част " || $(selector).size() === 0" от валидацията, линковете се появяват. Но като кликам по някой от последните 3, страницата блокира. Конкретно за Chrome - целия браузър блокира.


от Bruno (921 точки)


1
Ето едно и от мен. Цък :)

от Nayata (3190 точки)