Добавьте CSS Class после HTML div, используя JQuery
У меня есть этот HTML
<div class="portItem"></div>
<div class="portItem"></div>
<div class="portItem"></div>
<div class="portItem"></div>
Этот CSS
.rectangle {
height: 250px;
width: 100%;
position: relative;
display: none;
background: #ffffff;
box-shadow: 1px 0px 20px black;
overflow-y: hidden;}
Here's the CSS for portItem, although not necessary (forms 4 green blocks next to each other)
.portItem {
height: 180px;
width: 250px;
position: relative;
display: inline-block;
background: #D0E182;
margin: 0 5px 5px 0;
И я пытаюсь добавить прямоугольник CSS после любого из portItems, на которые я нажимаю.
Вот функция JQuery, которую я пытаюсь использовать:
$(document).ready(function() {
$('.portItem').click(function() {
addDiv($(this));
});
});
function addDiv($ele) {
var $box = $('<div />' '.rectangle');
$box.insertAfter($ele);
}
Проблема с оператором var $box, я не могу заставить его работать.
Заранее спасибо!
3 ответа
Решение
Вы пропускаете запятую и объект.
var $box = $('<div />', {'class':'rectangle'});
// -------------------^ ^ ^
// added comma-----| |___________________|---and object literal syntax
Цитаты вокруг class
необходимы для поддержки старых браузеров. Вы также можете использовать className
вместо.
var $box = $('<div />', {className:'rectangle'});
Как насчет этого:
var $box = $('<div/>').addClass('rectangle');
... или так просто, как...
var $box = $('<div class="rectangle"/>');
На самом деле, я мог бы рассмотреть возможность подготовки этого предмета из первых рук, а затем просто клонировать его. Например:
var $boxTemplate = $('<div class="rectangle">');
function addDiv($ele) {
$boxTemplate.clone().insertAfter($ele);
}
Измените строку var $box на:
var $box = $('<div class="rectangle" />');