Jump to content
  • 0

Вопрос по JQuery


TonKhaO
 Share

Question

Народ есть страница http://shinoda.ru/bug_fix/addBlocks.htm

Задача создание и удалением по одному блоку за раз, у меня щас они умножаются при копировании, как задать этой обертке $('.fileBlock').clone().insertAfter('.fileBlock'); чтобы он копировал только скажем первый (исходный) .fileBlock ?

И второй вопрос, почему то УДАЛЕНИЕ последнего по счету блока работает только на ИСХОДНОМ (то есть на том самом первом) блоке, на остальных они не воркают, что я не таксь сделал ))) см. скрины

kr.jpg

И еще вопросик почему в функции когда я указываю THIS

$('.buttonBlock span').click(function () {

$('.fileBlock').clone().insertAfter(!!!THIS!!!);

});

этот THIS относится к $('.buttonBlock span') а не к $('.fileBlock'), ведь на сколько я понимаю this всегда относится к текущей обертке, разве нет?

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

1. Это вообще лютый п...ец какой-то! Селектор '.className' "Matches all elements with the given class" хз как правильно по-русски сказать, но, думаю, понятно. То есть сначала склонируется один-единственный элемент и будет вставлен после него же. Потом будут клонированы два элемента и об будут вставлены после каждого из этих двух. И вообще нах вам клонирование? Используйте создание объектов.

2. this (по-русски "этот") относится именно к элементу, а ни к какой не к обёртке

Link to comment
Share on other sites

  • 0
1. Это вообще лютый п...ец какой-то! Селектор '.className' "Matches all elements with the given class" хз как правильно по-русски сказать,

Найдет все элементы, у которых установлено данное имя класса. ^_^

И вообще нах вам клонирование? Используйте создание объектов.

Шутник вы, батенька! Клонирование как раз - самый правильный способ. Только вот поведение скрипта должно быть не таким.

Кнопку клонирования вносим внутрь темплейта. Это нужно для того, чтобы клонировать только этот элемент, а не все на странице. В скрипте кнопки клонирования вместо селектора по имени класса, делаем поиск парента с заданным классом, или код кнопки делаем прямым потомком контейнера fileBlock и обращаемся через parentNode.

При клонировании удаляем из полученного объекта кнопку клонирования.

При нажатии на кнопку "удалить", нужно снова же найти парента у этого элемента, который имеет класс "fileBlock", и удалить его.

Link to comment
Share on other sites

  • 0
2. this (по-русски "этот") относится именно к элементу, а ни к какой не к обёртке

спасибо за урок английского у меня стаж 10 лет и я прекрасно знаю что такое this а что такое that ))))))

теперь по делу $('.buttonBlock span') и $('.fileBlock') вообще то обертками являются обе, причем тут элемент )))) разница в том что там спан и там див с классом .fileBlock так что ваш ответ не совсем понятен )))

Link to comment
Share on other sites

  • 0
   var block = "<div class='fileBlock'>"+$('div.fileBlock').html()+"</div>";

Народ, вы чего? ^_^

Создание HTML в скрипте - это самая гнилая затея с точки зрения расширения функционала системы...

Потом возникнет другая задача, и что вы будете делать? Переписывать скрипты раз за разом?

Link to comment
Share on other sites

  • 0
 
var block = "<div class='fileBlock'>"+$('div.fileBlock').html()+"</div>";
});

я немного не понял суть самой этой строки, как я ее понимаю, переменной блок сперва присваиваем строку <div class='fileBlock'> потом присоединяем к ней обертку в виде того же дива и потом извлекаем из этого .html() + закрывающийся див, блин обьясните логику ^_^

Link to comment
Share on other sites

  • 0
я немного не понял суть самой этой строки, как я ее понимаю, переменной блок сперва присваиваем строку <div class='fileBlock'> потом присоединяем к ней обертку в виде того же дива и потом извлекаем из этого .html() + закрывающийся див, блин обьясните логику ^_^

Логика а в том, что если удалить все строки с твоей страницы, ты уже не сможешь создать ни одной. Потому что не с чего будет клонировать (сам попробуй...).

Поэтому при загрузке мы запоминаем шаблон, который надо будет создавать, и потом делаем копии с него )))

А так скрипт вполне рабочий. Надо только заточить все под конкретные нужды.

Хотя если бы я делал на чистовую, сделал бы немного иначе....

В переменной block в итоге хранится шаблон блока, который нам и следует потом размножать.

Link to comment
Share on other sites

  • 0
Логика а в том, что если удалить все строки с твоей страницы, ты уже не сможешь создать ни одной. Потому что не с чего будет клонировать (сам попробуй...).

Поэтому при загрузке мы запоминаем шаблон, который надо будет создавать, и потом делаем копии с него )))

Зачем его запоминать? Присвой ему идентификатор в виде класса, который удаляется у клона, и проверяй перед удалением, а не шаблон ли это. Зачем что-то куда-то запоминать, если можно просто не давать удалять данную ноду?

Link to comment
Share on other sites

  • 0
Зачем его запоминать? Присвой ему идентификатор в виде класса, который удаляется у клона, и проверяй перед удалением, а не шаблон ли это. Зачем что-то куда-то запоминать, если можно просто не давать удалять данную ноду?

Ну ты если хочешь, можешь не давать удалять.

Я только привел _рабочий_ пример, как реализовать данный метод.

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