#mootools #element #code-injection
#mootools #элемент #внедрение кода
Вопрос:
извините, если это уже было рассмотрено, я посмотрел, но не наткнулся на вопрос-ответ (в прошлом я нашел так много ответов на свой вопрос здесь — продолжайте в том же духе, ребята девушки)
Я изучаю внедрение элементов Mootools, я не использую это долго, и я нахожу, что это открывает мне глаза на все виды использования. Мой вопрос в том, как мне создать новый элемент изображения, связанный с URL-адресом? например, как мне внедрить;
<a href="[url]"><img src="[path]" /></a>
Я могу сделать это как 2 отдельных элемента, но изо всех сил пытаюсь объединить их как один элемент. спасибо, что прочитали мой вопрос и дали любой совет.
Отметить
Комментарии:
1. спасибо за ваши ответы, я экспериментировал и придумал следующее решение для моих нужд photos.each(function(photo){ var el = новый элемент(‘div.image’), image = новый элемент (‘img’, { ‘src’: photo.src }).ввести (el), defaultLink = новый элемент( ‘a’, { ‘class’: ‘makeImageDefault’, ‘name’: photo.id }).ввести (изображение, ‘after’), defaultImageIcon = новый элемент(‘img’, { ‘src’: photo.DefaultIcon}).ввести (defaultLink, ‘inside’ ) el.ввести($(‘PhotoGrid’)); });
2. Теперь я сталкиваюсь со 2-й проблемой после завершения внедрения. Ссылка, которая вводит class=»makeImageDefault», связана с $$(‘a.makeImageDefault’).addEvent(), который работает для инициирования новой инъекции, не работает после инъекции
Ответ №1:
Используйте Elements.from
, это быстро, абсолютно корректно и просто.
var collection = '<a href="{href}"><img src="{src}" /></a>';
Elements.from(collection.substitute({
href: 'http://www.stackoverflow.com',
src: 'http://www.placekitten.com/300/300'
})).inject(document.body);
Очевидным недостатком является то, что у вас нет ссылок на созданные узлы, только на коллекцию элементов.
Комментарии:
1. 1, особенно для
.substitute
того, который так мало используется! Элементы. from — это зависимость от mootools-подробнее mootools.net/docs/more/Element/Elements . Хотя.2. 1, гораздо лучший ответ, чем мой. Я все еще изучаю MooTools, так что это полезно
:)
3. @DimitarChristoff, мне нравится
.subsitutute
, я бы хотел, чтобы мы могли использовать с ним пути, т.Е.'<a href="{link/url}">'.substitute({link: {url: '/'}})
4. hrm так действительно
{link.url}
должен разрешиться для вашего объекта? интересно. jsfiddle.net/dimitar/aRv7A при первом чтении, тестирование сgay.bar.name
помощью (только 3 уровня, но оно будет бесконечным). Я нахожу это полезным, хотя я думаю, что мы, вероятно, могли бы поработать над производительностью (улучшить цикл и т. Д.).
Ответ №2:
Вы могли бы использовать grab
или inject
для двух новых элементов ( img
и a
), чтобы вложить их:
var anchor = new Element("a", {
href: "http://www.stackoverflow.com"
});
var img = new Element("img", {
src: "http://www.placekitten.com/300/300"
});
// inject the img into the anchor
img.inject(anchor);
// Append the anchor into the body:
document.body.grab(anchor);
Это приведет к созданию следующего HTML:
<a href="http://www.stackoverflow.com">
<img src="http://www.placekitten.com/300/300">
</a>
Пример: http://jsfiddle.net/tNamz/
Ответ №3:
спасибо за ваши ответы, я экспериментировал и придумал следующее решение для своих нужд
photos.each(function(photo){
var el = new Element('div.image'),
image = new Element('img', {
'src': photo.src
}).inject(el),
defaultLink = new Element( 'a', {
'class': 'makeImageDefault', 'name': photo.id
}).inject(image, 'after'),
defaultImageIcon = new Element( 'img', {
'src': photo.defaultIcon
}).inject(defaultLink, 'inside' )
el.inject($('photoGrid'));
});
Комментарии:
1. Теперь я сталкиваюсь со 2-й проблемой после завершения внедрения. Ссылка, которая вводит class=»makeImageDefault», связана с $$(‘a.makeImageDefault’).addEvent(), который работает для инициирования новой инъекции, не работает после инъекции
2. Поздравляю с решением. Когда вы сможете, пожалуйста, не забудьте отметить свой ответ как «принятый», чтобы другие могли поучиться у вас успеху. Приветствия ~