Софтуерно Инженерство
Loading...
+ Нов въпрос
aivian avatar aivian 50 Точки

ConsumingRemoteData - 4.EditABook

Имам проблем с тази задача. Искам като се кликне върху книга, първо да се показва формата и в нея да има бутон, който като бъде кликнат, да започнат да излизат prompt - ове, да питат потребителя за заглавие, автор и isdn. Прблемът е, че като се кликне на книгата, започват директно да излизат prompt - овете, без да се показва формата. 

HTML: http://pastebin.com/FFfCqRxY CSS: http://pastebin.com/kJSYcUeQ JS: http://pastebin.com/04xYfmzH Image: http://imgur.com/4FaODcI

0
JavaScript Applications
Filkolev avatar Filkolev 4428 Точки

.click(editBook(book.objectId)) ще изпълни директно функцията, затова така се получава. Сложи само editBook в click event-a, е в самата функция editBook трябва по някакъв начин да вземеш нужното id. Може да го зададеш като атрибут на бутона и през this да го достъпиш. 

0
taylorswift avatar taylorswift 54 Точки

Смени края на 41-ви ред с .click(function(){editBook(book.objectId)})

Просто като имаш .click(functionName) всичко работи ок, но като имаш .click(functionName(args)) все едно си направил .click(functionName()) и функцията ти се изпълнява дори да не си кликнал.

0
15/04/2015 21:53:48
AleksandurSeferinkin avatar AleksandurSeferinkin 335 Точки

$('<button></button>').text('Edit book').click(editBook(book.objectId))

Ще стане на: 

$('<button></button>').text('Edit book').click(function() {

    editBook(book.objectId);

});

Просто wrap-ваш нещото в нова функция :)

1
Filkolev avatar Filkolev 4428 Точки

Това също е вариант и е малко по-прост от това, което предложих. Но на тези домашни ми се случи да искам да си ползвам някакви функции не само като викна евент, но и в други случаи, т.е. ако тази функция има вероятност да потрябва и на друго място няма как да е анонимна и ще трябва по по-сложен начин да се извади id-то, вместо да се подава като аргумент. Т.е. подходът е според зависи,  анонимната функция е напълно адекватна в случая.

2
aivian avatar aivian 50 Точки

Заработи. Мерси на всички.

1