Редактировать: Я нашел лучший способ сделать это.Старый код теперь больше похож на план для более сложных вещей.
Похоже, есть более простой способ сделать это без jQuery:
SetElemById("foo", JE.Str("baz"), "className")
, что переводится вВызов JavaScript
document.getElementById("foo").className = "baz";
Обратите внимание, что JE.Str("baz")
может быть любым JsExp
, и если бы вы могли также сделать что-то вроде
SetElemById("foo", JE.Str("baz"), "firstChild", "className")
, что изменило бы класс первого потомка.(См .: SetElemById )
Вы можете взглянуть на код для признака JsCMD , что еще возможно с помощью встроенных команд.
Если вы хотите что-то более сложное, вам может помочь что-то подобное.Он отправляет команду jQuery, которая изменит класс в #oldId
на newClass
.
case class ChangeClassAtId(oldId: String, newClass: String) extends JsCmd {
def toJsCmd = """try {
$(""" + ("#" + oldId).encJs + """).attr("class", """ + newClass.encJs + """);
} catch (e) {}"""
}
Изменить все вхождения класса везде немного сложнее:
case class ChangeClass(oldClass: String, newClass: String) extends JsCmd {
def toJsCmd = """try {
$(""" + ("." + oldClass).encJs + """).each(function(){
$(this).addClass(""" + newClass.encJs + """).removeClass(""" + oldClass.encJs + """);
});
} catch (e) {}"""
}
Вы должны использовать это вместо Noop
конечно.