“слишком много рекурсии” ошибка в JQuery 1.3.2

У меня была связанная с этим проблема, работающая в Spyder, но проблема заключается в связи между escape-символом («\») и «\» в имени пути. Вот моя иллюстрация и решение (обратите внимание на single \ vs double \ \):

path =   'C:\Users\myUserName\project\subfolder'
path   # 'C:\\Users\\myUserName\\project\subfolder'
os.listdir(path)              # gives windows error
path =   'C:\\Users\\myUserName\\project\\subfolder'
os.listdir(path)              # gives expected behavior
16
задан Elias Zamaria 12 March 2009 в 18:19
поделиться

8 ответов

Спасибо всем. Я попробовал идею grillix установить проверенный атрибут, хотя я должен был согласовать синтаксис немного. Вот то, что я сделал:

$(this).children("input").attr("checked", true);

Это работает, но мне все еще любопытно относительно того, почему мой предыдущий путь прекратил работать с JQuery 1.3.2. Я знаю об изменениях в поведении распространения событий, но почему я не могу зафиксировать, это путем вызова "event.stopPropagation ()" или "возвращает false" в рамках моего обратного вызова?

0
ответ дан 30 November 2019 в 21:37
поделиться

ya, нажмите пузыри события up†¦ поэтому, когда Вы повышаете $(this).children("input").click(), Вы повышаете $(".question div").click() снова и так далее.

6
ответ дан 30 November 2019 в 21:37
поделиться

Только огонь click(), когда цель события является отделением, т.е.

$(function() {
    $(".question div").click(function(event) {
        if($(event.target).is('div'))
            $(this).children("input").click();
    });
});
3
ответ дан 30 November 2019 в 21:37
поделиться
$(function() {
    $(".question div").click(function() {
        var radio = $(this).children("input")[0];
        radio.checked = !radio.checked;
    });
});
7
ответ дан 30 November 2019 в 21:37
поделиться

Проблемой (поскольку grilix сказал) является событие, "пузырящееся" DOM, таким образом, существует легкое решение этого, просто необходимо отменить тот пузырьковый эффект.

Пузырь относится к (простой английский язык) событие, инициированное на ВСЕХ элементах, которые затронуты из-за, это - положение в рамках документа. Так, в Вашем примере событие "щелчка" получено (в этом порядке) ТЕЛО, затем родитель (.question) DIV, затем другой DIV и наконец ВХОДОМ.

Чтобы сделать ту пузырьковую отмену, можно пойти jQuery путь путем вызова stopPropagation метода в функции обратного вызова, как это:

$(function() {
    $(".question div").click(function(event) {
        $(this).children("input").click();
        event.stopPropagation();
    });
});

Плоскость JavaScript, путь потребовал бы, чтобы Вы использовали cancelBubble метод, но я предполагаю это, выходит за рамки Вашего вопроса.

Поздравления, Manolo

1
ответ дан 30 November 2019 в 21:37
поделиться

Почему необходимо сделать это, если Вы уже используете <label for="">? Нажатие на маркировку должно активировать радиоуправление так или иначе.

[Редактирование:] Развитие Вашего комментария, можно сделать это этот путь:

Заставляют маркировку отобразиться как элемент блока, применить все стили, которые Вы использовали для отделения, обертывающего поле.

.question label { display:block }

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

<label><input type="radio">Coke</label>
<label><input type="radio">Pepsi</label>
4
ответ дан 30 November 2019 в 21:37
поделиться

Я не помню о том, как проверить радио с jQuery, но мог быть похожим на это:

<script type="text/javascript">
$(function() {
    $(".question div").click(function() {
        $(this).children("input").checked(true);
// or
        $(this).children("input").checked= true;
    });
});
</script>
0
ответ дан 30 November 2019 в 21:37
поделиться

Я знаю, что это может быть не ответом вообще, но я пишу это, как это произошло со мной прежде: Это дало мне “too много recursion” ошибки, в то время как я использовал jQuery и прототип в том же проекте, и также это может произойти с ajax.net с jQuery, поэтому удостоверьтесь, что нет никакого конфликта между библиотеками при использовании больше чем одного.

0
ответ дан 30 November 2019 в 21:37
поделиться
Другие вопросы по тегам:

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