Я пытаюсь добавить занавес div к каждому элементу списка индивидуально. Я могу легко добавить div к каждому элементу с помощью:
$("ul li a").append('<div class="curtain"></div>');
Но мне нужно установить свойство цвета фона для каждой созданной шторки.
function curtain() {
var el = document.getElementByTagName('ul li');
this.anchor = el.querySelector('a');
this.image = el.querySelector('img');
this.curtain = document.createElement( 'div' );
this.curtain.className = 'curtain';
var rgb = new ColorFinder( function favorHue(r,g,b) {
// exclude white
//if (r>245 && g>245 && b>245) return 0;
return (Math.abs(r-g)*Math.abs(r-g) + Math.abs(r-b)*Math.abs(r-b) + Math.abs(g-b)*Math.abs(g-b))/65535*50+1;
} ).getMostProminentColor( this.image );
if( rgb.r && rgb.g && rgb.b ) {
this.curtain.style.background = 'rgb('+rgb.r+','+rgb.g+','+rgb.b+')';
}
this.anchor.appendChild(this.curtain);
};
В настоящее время для этого не работает, и я не уверен, почему.
2 ответа
Вы можете использовать ту же строку, которую вы ввели, но с некоторыми изменениями:
$("ul li")each(function()
{
var new_div=$('<div class="curtain"></div>');
// get the color with your code
new_div.css({"background":'rgb('+rgb.r+','+rgb.g+','+rgb.b+')'})
//$(this) is an (ul li) item
$(this).find("a").append(new_div);
});
Слегка изменив функцию curtain
для выполнения цикла с each
(и используя селекторы jQuery), вы легко сможете решить вашу проблему.
function curtain(){
$('ul li').each(function(){ //loop through each `ul li` element
var $a = $('a', this), //find the `a` element in `li` equivalent to `$(this).find('a')`
img = $('img', this)[0], //get the element from the jQuery object
$div = $('<div class="curtain" />'), //create a new div with your class curtain
rgb = new ColorFinder(function favorHue(r,g,b){ //get rgb from your class
//exclude white
//if (r>245 && g>245 && b>245) return 0;
return (Math.abs(r-g)*Math.abs(r-g) + Math.abs(r-b)*Math.abs(r-b) + Math.abs(g-b)*Math.abs(g-b))/65535*50+1;
}).getMostProminentColor(img);
if(rgb.r && rgb.g && rgb.b){
$div.css('background', 'rgb('+rgb.r+','+rgb.g+','+rgb.b+')');
}
$a.append($div); //append div to the `a` element
});
};
Похожие вопросы
Новые вопросы
jquery
jQuery — это библиотека JavaScript. Также рассмотрите возможность добавления тега JavaScript. jQuery — это популярная кросс-браузерная библиотека JavaScript, которая упрощает обход объектной модели документа (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться рассматриваемым кодом, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.
$("SELECTOR").each(function(){ $(this).append('<div class="curtain"></div>'); }
document.getElementByTagName('ul li');
?document.getElementByTagName
даже не существует, этоdocument.getElementsByTagName
, и он работает, только если вы дадите ему одно имя тега (например, "ul" или "li")