тег link jQuery включает, отключают

@Blair Conrad сказал статические переменные, объявленные в определении класса, но не в методе, являются классом или "статическими" переменными:

>>> class Test(object):
...     i = 3
...
>>> Test.i
3

существуют некоторые глюк здесь. Продолжение от примера выше:

>>> t = Test()
>>> t.i     # "static" variable accessed via instance
3
>>> t.i = 5 # but if we assign to the instance ...
>>> Test.i  # we have not changed the "static" variable
3
>>> t.i     # we have overwritten Test.i on t by creating a new attribute t.i
5
>>> Test.i = 6 # to change the "static" variable we do it by assigning to the class
>>> t.i
5
>>> Test.i
6
>>> u = Test()
>>> u.i
6           # changes to t do not affect new instances of Test

# Namespaces are one honking great idea -- let's do more of those!
>>> Test.__dict__
{'i': 6, ...}
>>> t.__dict__
{'i': 5}
>>> u.__dict__
{}

Уведомление, как переменная экземпляра t.i вышла из синхронизации со "статической" переменной класса, когда атрибут i был установлен непосредственно на t. Это вызвано тем, что i было восстановление в t пространство имен, которое отлично от Test пространство имен. Если Вы хотите изменить значение "статической" переменной, необходимо изменить его в объеме (или объект), где оно было первоначально определено. Я поместил "статичный" в кавычки, потому что Python действительно не имеет статических переменных в том смысле, что C++ и Java делают.

, Хотя это не говорит ничего определенного относительно статических переменных или методов, , учебное руководство Python имеет немного релевантной информации о [1 111] классы и объекты класса .

@Steve Johnson также ответил относительно статических методов, также зарегистрированных под "Встроенными функциями" в Справочное руководство по библиотеке Python.

class Test(object):
    @staticmethod
    def f(arg1, arg2, ...):
        ...

@beid также упомянул classmethod, который подобен staticmethod. Первым аргументом classmethod является объект класса. Пример:

class Test(object):
    i = 3 # class (or static) variable
    @classmethod
    def g(cls, arg):
        # here we can use 'cls' instead of the class name (Test)
        if arg > cls.i:
            cls.i = arg # would the the same as  Test.i = arg1

Pictorial Representation Of Above Example

8
задан THelper 2 May 2012 в 00:46
поделиться

3 ответа

function disableLink(e) {
    // cancels the event
    e.preventDefault();

    return false;
}

Если вы хотите отключить его, позвоните по телефону

$('#addlink').bind('click', disableLink);

Если вы хотите включить отключенную ссылку, вы позвоните по телефону

$('#addlink').unbind('click', disableLink);
27
ответ дан 3 November 2019 в 13:10
поделиться
$('#addlink').click(function(e) {
    e.preventDefault();
    //do other stuff when a click happens
});

return false;

предотвратит возникновение события по умолчанию и а также предотвратить всплытие события

Так что выбор между этими двумя зависит от вашего использования. Если вы хотите остановить действие по умолчанию, а также вам нужно всплыть по событию, используйте preventDefault

4
ответ дан 3 November 2019 в 13:10
поделиться

Я бы выбрал гибрид решения RaYell и Phoenix, добавив к нему пространство имен jQuery :

$('#addlink').bind('click.killlink',function(event){
    event.preventDefault();
    // You can do any additional onClick behavior here
});

Чтобы отвязать это событие, а также любые другие связанные события (любого типа), которые вы группируете с пространством имен .killink, вы должны запустить это:

$('#addlink').unbind('.killlink');

Как указал Феникс, использование return false предотвратит всплытие события. preventDefault () имеет дополнительное преимущество, заключающееся в том, что он предельно явный (в отличие от return false , который может означать много разных вещей в зависимости от контекста).

2
ответ дан 3 November 2019 в 13:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: