#javascript #html #css
#javascript #HTML #css
Вопрос:
Я хочу перевести следующий HTML-код в функцию Javascript:
<a class='example' href="../content/flash.html">Click Me</a>
В принципе, я хочу дублировать эффект нажатия на ссылку через JS.
function doStuff()
{
location.replace('../content/ajax.html');
}
Приведенный выше код просто перенаправляет на ajax.html .
Как я могу активировать CSS-класс ‘example’ через Javascript при перенаправлении?
Причина, по которой я хочу это сделать: CSS-class ‘example’ показывает содержимое ajax.html внутри лайтбокса (Colorbox, если быть точным).
Комментарии:
1. Не существует такого понятия, как «класс CSS». Вы имеете в виду «Набор правил CSS с селектором классов»? «HTML-элемент, который является членом определенного (HTML) класса»? Что-то еще?
2. Что означает «активировать» в этом контексте? В терминах CSS, если что-то активно, то это нажатие кнопки мыши во время наведения на него, или нажатие клавиши запуска во время фокусировки, но в данном контексте это не имеет смысла.
3. Вызов
location.replace
не будет иметь такого же эффекта, как щелчок по ссылке. Он заменяет текущую страницу в истории. Вы бы хотелиlocation.href = something
для этого.4. Вопрос расплывчатый. Пожалуйста, опишите, что вы хотите, чтобы произошло более подробно.
Ответ №1:
Самый быстрый способ добиться подобных результатов — это войти в jQuery, в частности, в его click()
обработчик и функцию ajax load()
:
HTML
<div id="contentArea"></div>
<a class="example" href="#">Click Me</a>
JQUERY
$(function () {
$('a.example').click(function () {
$('#contentArea').load('../content/flash.html');
return false;
});
});
Комментарии:
1. Фух. Это выглядит намного элегантнее, чем моя тарабарщина.
Ответ №2:
Тоже немного запутался, но вот предположение.
Вы могли бы указать идентификатор:
<a id='clickMe' class='example' href="../content/flash.html">Click Me</a>
И в js:
document.getElementById("clickMe").className = "example";
Ответ №3:
Я надеюсь, вы ищете что-то вроде этого
document.getElementById('myDiv').className = 'myRedDivClass';
попробуйте использовать jquery, и это облегчит вам жизнь
Ответ №4:
Я надеюсь, что я не понял вопроса, поскольку… Ну, это немного странно. Далее ~ РЕДАКТИРОВАТЬ: я написал «Я не надеялся, что понял вопрос. Я имел в виду делать. LOL
Если у вас больше одного .example
класса, тогда вам придется использовать getElementsByClassName();
, но не все браузеры поддерживают это. Однако, если у вас есть только один элемент, я предлагаю присвоить ему идентификатор, а затем выбрать этот элемент с помощью getElementById();
.
Решение для того, getElementsByClassName();
чтобы не поддерживаться во всех браузерах, было бы:
function getElementsByClassName(classname) {
if (document.getElementsByClassName) {
return document.getElementsByClassName(classname);
} else {
return (function (classn, document) {
var classElements = [],
e = document.getElementsByTagName("*"),
len = e.length,
pattern = new RegExp("(^|\s)" classn "(\s|$)"),
i, k;
for (i = 0, k = 0; i<len; i ) {
if (pattern.test(e[i].className)) {
classElements[k] = e[i];
k ;
}
}
return classElements;
})(classname, document);
}
}
Связующая часть
Итак, я думаю, что лучший способ сделать это — использовать addEventListener();
однако, это мое личное мнение, и вы можете найти чье-то другое, которое, по вашему мнению, больше подходит для того, что вам нужно.
function doStuff() {
location.replace('../content/ajax.html');
}
var es = getElementsByClassName('example'),
len = e.length;
for(i=0; i<len; i ) {
es[i].addEventListener("click", doStuff, false);
}
xoxo
PS: Я не проверял это, поэтому, если что-то не так, кто-нибудь отредактируйте это или дайте мне знать в комментариях!