У меня была связанная с этим проблема, работающая в 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
Спасибо всем. Я попробовал идею grillix установить проверенный атрибут, хотя я должен был согласовать синтаксис немного. Вот то, что я сделал:
$(this).children("input").attr("checked", true);
Это работает, но мне все еще любопытно относительно того, почему мой предыдущий путь прекратил работать с JQuery 1.3.2. Я знаю об изменениях в поведении распространения событий, но почему я не могу зафиксировать, это путем вызова "event.stopPropagation ()" или "возвращает false" в рамках моего обратного вызова?
ya, нажмите пузыри события up†¦ поэтому, когда Вы повышаете $(this).children("input").click()
, Вы повышаете $(".question div").click()
снова и так далее.
Только огонь click()
, когда цель события является отделением, т.е.
$(function() {
$(".question div").click(function(event) {
if($(event.target).is('div'))
$(this).children("input").click();
});
});
$(function() {
$(".question div").click(function() {
var radio = $(this).children("input")[0];
radio.checked = !radio.checked;
});
});
Проблемой (поскольку grilix сказал) является событие, "пузырящееся" DOM, таким образом, существует легкое решение этого, просто необходимо отменить тот пузырьковый эффект.
Пузырь относится к (простой английский язык) событие, инициированное на ВСЕХ элементах, которые затронуты из-за, это - положение в рамках документа. Так, в Вашем примере событие "щелчка" получено (в этом порядке) ТЕЛО, затем родитель (.question) DIV, затем другой DIV и наконец ВХОДОМ.
Чтобы сделать ту пузырьковую отмену, можно пойти jQuery путь путем вызова stopPropagation метода в функции обратного вызова, как это:
$(function() {
$(".question div").click(function(event) {
$(this).children("input").click();
event.stopPropagation();
});
});
Плоскость JavaScript, путь потребовал бы, чтобы Вы использовали cancelBubble метод, но я предполагаю это, выходит за рамки Вашего вопроса.
Поздравления, Manolo
Почему необходимо сделать это, если Вы уже используете <label for="">
? Нажатие на маркировку должно активировать радиоуправление так или иначе.
[Редактирование:] Развитие Вашего комментария, можно сделать это этот путь:
Заставляют маркировку отобразиться как элемент блока, применить все стили, которые Вы использовали для отделения, обертывающего поле.
.question label { display:block }
и затем используют это расположение. Можно избавиться если отделения также.
<label><input type="radio">Coke</label>
<label><input type="radio">Pepsi</label>
Я не помню о том, как проверить радио с jQuery, но мог быть похожим на это:
<script type="text/javascript"> $(function() { $(".question div").click(function() { $(this).children("input").checked(true); // or $(this).children("input").checked= true; }); }); </script>
Я знаю, что это может быть не ответом вообще, но я пишу это, как это произошло со мной прежде: Это дало мне “too много recursion” ошибки, в то время как я использовал jQuery и прототип в том же проекте, и также это может произойти с ajax.net с jQuery, поэтому удостоверьтесь, что нет никакого конфликта между библиотеками при использовании больше чем одного.