Как выбрать: после элемента с использованием jquery
Bellow - это мои коды. Что я пробовал. Когда появилось это всплывающее окно, я хочу использовать эту кнопку закрытия, чтобы закрыть всплывающее окно.
CSS-код
.bigdiv{
display:none;
background-color:#efefef;
box-shadow: 10px 10px 10px 100000px rgba(0, 0, 0, 0.4);
border:2px solid #efefef;
width:400px;
height:300px;
position:fixed;
z-index:500;
top:25%;
left:25%;
margin:0 auto;
padding:20px;
}
.bigdiv:after {
cursor:pointer;
content:url('http://static.doers.lk/img/closebox.png');
position: relative;
right: -195px;
top: -310px;
z-index: 999;
}
JQuery
$(".left div").click(function () {
$(".bigdiv").show("slow");
$(".bigdiv").click(function () {
$(".bigdiv").hide();
}) ; }) ;
HTML
<div class="left">
<div>intro text here</div><div></div><div></div>
</div>
<div class="bigdiv">some content</div>
Я хочу выбрать: после элементов. Как это сделать с помощью jquery?
Ответы
Ответ 1
Я хочу выбрать: после элементов. Как это сделать с помощью jquery?
Вы не можете, генерируемые псевдоэлементы не существуют в DOM (но, к сожалению).
Мы можем доказать это так:
CSS
#foo:before {
content: '[Before]'
}
#foo:after {
content: '[After]'
}
HTML:
<body><div id="foo">Foo</div></body>
JavaScript:
(function() {
var msgs = [];
var child;
var div;
for (child = document.body.firstChild;
child;
child = child.nextSibling) {
if (child.id) {
msgs.push("Child " + child.nodeName + "#" + child.id);
}
else {
msgs.push("Child " + child.nodeName);
}
}
div = document.createElement('div');
div.innerHTML = msgs.join("<br>");
document.body.appendChild(div);
})();
Страница, полученная выше (если мы предположим, что элемент script
добавлен в body
в конце):
[Before]Foo[After]
Child DIV#foo
Child SCRIPT
Live Copy | Источник
Как вы можете видеть, сгенерированные псевдоэлементы просто отсутствуют вообще в отношении DOM.
Ответ 2
Вы можете использовать функцию getComputedStyle, которая поддерживается большинством основных браузеров - IE9, IE10, Chrome, FF. Я не нашел способ сделать это в IE8, хотя.
var attrContent = getComputedStyle(this,':after').content;
var attrWidth = getComputedStyle(this,':after').width;
Если вы обнаружите, что эта функция undefined, попробуйте window.getComputedStyle вместо этого.
Ответ 3
К сожалению, вы не можете выбрать псевдоэлементы в jQuery (или JavaScript вообще).
jQuery appendTo()
метод работает точно так же, как CSS :after
, хотя он может работать как замена (хотя и не настолько элегантная, как чисто CSS-решение).
а не:
.bigdiv:after {
cursor:pointer;
content:url('http://static.doers.lk/img/closebox.png');
position: relative;
right: -195px;
top: -310px;
z-index: 999;
}
Попробуй так:
CSS
.bigdivAfter {
cursor:pointer;
position: relative;
right: -195px;
top: -310px;
z-index: 999;
}
JS:
$("<div class=bigdivAfter><img src='http://static.doers.lk/img/closebox.png'></div>").appendTo(".bigdiv");
И затем вы можете выбрать изображение с близкого расстояния, как обычно.
Ответ 4
вы можете использовать jquery для добавления кнопки закрытия и можете назначить для него закрытое событие.
Этот jquery и css будут работать для вас.
CSS
.bigdivAfter {
cursor:pointer;
position: absolute;
right: //as you want;
top: //as you want;
z-index: 999;
}
JQuery
$(document).ready(function(){
$(".bigdiv").append('<img class="closeButton" src="http://static.doers.lk/img/closebox.png"/>');
$(".bigdiv .closeButton").click(function () {
$(".bigdiv").hide();
}) ;
$(".left div").click(function () {
$(".bigdiv").show("slow");
}) ;
Я также предлагаю вам добавить изображение непосредственно на html, а не добавлять его через jquery