Вы можете добавить оператор if.
$(function() {
$("#myVideo").each(function() {
this.volume = 0.0;
});
});
$(function() {
$("#myVideo").click(function() {
if(this.volume == 0.8){
this.volume = 0.0;
}
else{
this.volume = 0.8
}
});
});
Со встроенным оператором.
$(function() {
$("#myVideo").each(function() {
this.volume = 0.0;
});
});
$(function() {
$("#myVideo").click(function() {
(this.volume == 0.8) ? this.volume = 0.0 : this.volume = 0.8
});
});
Одно обстоятельство, при котором логика была бы выполнена несколько раз, - то, если класс загружается многократно другим ClassLoaders. Обратите внимание, что в этом экземпляре, они - чрезвычайно различные классы.
Обычно, хотя, это одноразовые соглашения. Если Вы хотите смочь вызвать логику многократно, сделайте, как другие предположили и выразились в статическом методе.
Я соглашаюсь с ответом Earwicker. Просто извлеките статическую инициализацию к отдельному статическому методу.
public class Foo {
static {
Foo.initialize();
}
public static void initialize() {
System.out.println("bar");
}
}
Поместите код initalisation в отдельный общедоступный статический метод, таким образом, можно назвать его от статического инициализатора и откуда-либо?
Вы могли попытаться расширить класс, который содержит статический код и затем вставляет Ваш собственный статический инициализатор. Не совсем уверенный, если это работает, но:
public class OldBadLibraryClass {
static {
System.out.println("oldBadLibrary static init");
}
}
//next file
public class MyBetterClass extends OldBadLibraryClass {
static {
System.out.println("MyBetterClass init");
}
}
public class Test {
public static void main(String[] args) {
new MyBetterClass();
}
}
посмотрите, ожидаете ли вышеупомянутая печать в порядке Вы. На моей машине это работало.
Хотя это - полностью взлом и является довольно хрупким. Действительно было бы намного лучше изменить старый класс, чтобы иметь init () метод, который может быть переопределен.