09.jQuery Overview


4

Ето домашното като отново се извинявам за миналото където рекурсията бях забравил ретърна :D

08.JQuery Overview: Цък

07.Event Model: Цък

06.DOM Operations: Цък

Имайте предвид сега останових че гръмва на each() та за 100т в бг кодер ползвайте стандартен for най лесно $selector.length взима броя на децата :)




Отговори



1
Не виждам смисъл всеки ден да отваряш тема и да си пускаш домашното... разбрахме, че си го написал. Ако имаш някакъв въпрос относно домашното го задай, а не да смапиш форума и да се фукаш... !

от c.karadjov (189 точки)


2
А какво лошо има в това да си сподели домашните? Според мен форумът е основно за това - да си споделяме опита в програмирането.

от hankrum (71 точки)

0
Да обсъждаме, помагаме и питаме ако има нещо неясно е ок също и да споделяме код, но в случая не виждам смисъл от пльоснат код всеки ден, при положение, че някой ако иска да копи пейст ще го намери една страница по-назад във същата тема. Това е мое мнение, не се правят форум точки така.

от c.karadjov (189 точки)



2

Както казваш, важно е да има развитие!

предлагам ти опростено решение на jQuery Overview / task1 -

търси при if при true да е нещото което се случва и избягвай let, защото BGCoder никога не е надежден

function solve() { return function (selector, count) { if (!(selector && count > 1)) { throw Error('invalid'); } var ulElement = $('<ul/>').addClass('items-list'); for (var counter = 0; counter < count; counter += 1) { ulElement.append($('<li/>') .addClass('list-item').text('List item #' + counter)); } $(selector).append(ulElement); } };

условието

if (selector != undefined && selector != null && typeof count == 'number' && count > 1)

може да се опрости, защото JS приема selector за false при undefined и при null, а ако count > 1 е true то очевидно е number (или както казват convertible to  Number)  и едновременно е изпълнено че е по голямо от 1

While - do е по-малко подходящ от for, когато имаш ясни начална и крайна стойност (както в този случай)

мисля, че и в task2 има някои неща от този тип, дето можеш да оптимизираш


от mitkop (563 точки)


0
Мерси :) така е

от IliyaST (251 точки)


0

Имам проблем с втората задача. Прилагам кода си, ако някои може да помогне?

function solve() { return function(selector) { $(".button").html("hide"); if (typeof selector !== 'string' || !($(selector).length)) { throw Error("Must be a string or Jquery object"); } var sibling = $("") $(".button").click(function() { var $this = $(this); var nextSibling = $this.next(); while (nextSibling) { if (nextSibling.attr("class") === "content" && nextSibling.next().attr("class") === "button") { if (nextSibling.attr("display") === none) { nextSibling.attr("display", ""); $this.html("hide"); break; } else { nextSibling.attr("display", "none"); $this.html("show"); break; } } nextSibling = nextSibling.next(); } }); }; }; module.exports = solve;


от peter_85 (214 точки)


0
Дава ти грешки на 3-ти и 4-ти тест. Ти проверяваш за последователни button и content, а Цъки е дал тестове с dummy nodes между тях :D.

от hankrum (71 точки)

0

е нали пише: Find the topmost .content element, that is before another .button

и после: If there isn't a .content element after the clicked .button and before other .button, do nothing

Т.е. трябва да са един след друг.

Според мен нещо по кода има, което е сгрешено.


от peter_85 (214 точки)



0

Не мога да си намеря грешка в кода, в бгкодер точките са 92/100

function solve() { return function (selector, count) { if(typeof selector === 'undefined' || selector === null || typeof selector !== 'string'){ throw Error('Invalid or missing selector!'); } if (isNaN(count) || count < 1) { throw Error('Count is not a valid number!'); } var $ul = $('<ul />').addClass('items-list'); var $selected = $('selector'); if ($selected.length !== 0) { for (var i = 0; i < count; i += 1) { $ul.append($('</li>')) .addClass('list-item') .text('List item #' + i); } $selected.append($ul); } }; }


от olebg (494 точки)


2
Здравей, заповядай кода ти за 100/100, промених 1-2 реда и всички тестове минаха:
function solve() { return function (selector, count) { if(typeof selector === 'undefined' || selector === null || typeof selector !== 'string'){ throw Error('Invalid or missing selector!'); } if (isNaN(count) || count < 1) { throw Error('Count is not a valid number!'); } var $ul = $('<ul />').addClass('items-list'); var $selected = $(selector); if ($selected.length !== 0) { for (var i = 0; i < count; i += 1) { $('<li />') .addClass('list-item') .html('List item #' + i) .appendTo($ul); } $selected.append($ul); } }; }

от TsvetelinaM (52 точки)

1

Здрасти,

1.Най-напред при $selected = $('selector') селектираш без кавичките, selector ще ти се подаде с все кавички, виж как е подаден в html-файла в solve() - func('#root', 5);

2. Така, както апендваш li-та, слагаш клас/текст на ul-а, а не на li-тата в него;

3. li-тата не се създават въобще (отваряйки html-файла в браузера), защото тагът трябва да е <li />, не </li>

Ей тук е кодът ти с тези корекции за 100/100 :)


от Daniela_Popova (1125 точки)



0
А какво се случва със видеотата за тук?

от cmdkick (108 точки)


1
Тази лекция я води Дончо и май към края на лекцията видя, че има някакъв проблем с видето и не се е записало или нещо от сорта, но каза, че тази лекция е абсолютно аналогична с тази от миналата и от по-миналата година, общо взето, че jQuery не се е променил много, че да има значение от коя година се гледа лекцията.

от olebg (494 точки)


0

Решения 100/100 в BgCoder на 2-те задачи Generate List и Show/Hide с jQuery

-> цък




0

Здравейте,

Някой може ли да ми каже къде греша на Task 1, BGCoder ми дава 78 или 85 точки?

Благодаря

function solve() { return function (selector, count) { if ($(selector) === null || $(selector) === 'undefined') { throw new Error('selector does not selects anything') } if (typeof count !== 'number' || count < 1) { throw new Error('Invalid count') } var $list = $('<ul />').addClass('items-list'); for (var i = 0; i < count; i += 1) { $('<li />').appendTo($list) .addClass('list-item') .text('List item #' + i) } $(selector).append($list); } }


от Silvi (25 точки)


0

Проверките обикновено са много тегави. Пробвай да замениш твоите проверки с тези:

if (Number.isNaN(count) || count <= 0 || typeof count !== 'number') { throw new Error('wrong count');

}

if(typeof selector !== 'string'){ t

throw new Error('wrong selector');

}



0
Благодаря, проблема беше наистина в проверките.

от Silvi (25 точки)



0

На jquery overview като пусна тестовете ми изписва:

'iojs' is not recognized as an internal or external command,

дадох npm install iojs, но няма промяна. Идеи?

Update: дръпнах наново папката и се оправи

Update 2:  Моля за помощ! Единия от тестовете не минава.

function solve() { return function (selector) { var element = $(selector); if (!element.length) throw Error(); $(".button").each(function () { $(this).html('hide'); }); element.click(function (ev) { var clickedButton = $(ev.target); var nextContent = clickedButton.next(".content"); var nextButton = nextContent.next(".button"); if (nextContent.length && nextButton.length) { if (clickedButton.html() == 'hide') { nextContent.css('display', 'none'); clickedButton.html('show'); } else { nextContent.css('display', ''); clickedButton.html('hide'); } } }); }; };

Update 3: Не мога да си обясня точната причина, но минава всички тестове след като смених

var nextContent = clickedButton.next(".content");

със

var nextContent = clickedButton.nextAll(".content").first();




0

Просто го изтрий от package.json (Да стане така "test": "node node_modules/mocha/bin/mocha  tests/") и би трябвало да е ОК след това.


от ktsvetanov (570 точки)

0
да, така работи и аз го имах този проблем!

от peter_85 (214 точки)