Итак, у меня есть поле ввода, которое, когда вы переходите к нему с помощью мыши, обычно не работает. Это происходит потому, что:javascript, распространение событий и поля ввода
- входа создается после загрузки путем расширения этого элемента в режиме редактирования
- Чтобы развернуть элемент, мы используем событие щелчка на Ли, который является родителем названия, которое заменяется с входом
- Благодаря тому, как работает приложение, мы должны использовать жить вместо мыши, который не позволяет использовать stopPropagation()
Так мы используем:
$('li').live("click",function(e) {
if ($(e.target).is('input')) { return; }
// do stuff
});
Тогда из-за этого, очевидно, каждый раз, когда мышь пытается щелкнуть по вводу, либо для перемещения курсора, выделения его содержимого и т. Д., Он просто игнорирует его.
Если я удаляю целевую линию, когда я нажимаю на вход, она закрывает ли.
Итак ... мой вопрос: Любая идея, как сделать ввод кликабельным, не закрывая ли, и все еще быть в состоянии использовать живой, а не кликнуть?
* "Тогда из-за этого, очевидно, какое-то время мышь пытается нажать на входе, либо для перемещения курсора, выделения его содержимого и т. д., он просто игнорирует его ». * Зачем это делать? Вы не вызывали 'preventDefault' или выполняли' return false'. –
* «Чтобы развернуть элемент, мы используем событие click на листе, являющемся родителем заголовка, и которое заменяется на вход« * Вы заменяете 'li' на' input'? Это приведет к недопустимой структуре DOM, единственные элементы 'li' будут действительны, элементы' input' недопустимы. Код стоит тысячи слов, рекомендуется показать нам полный, упрощенный, автономный пример (отправьте код на вопрос и, возможно, * также * на http://jsbin.com или http://jsfiddle.net). –
Не вижу проблемы с этой проверкой: http://jsbin.com/eritof (у меня был 'input' заменить' span' внутри 'li'). Замечание: 'live' устарел и никогда не был очень хорошей идеей, рекомендуется использовать' delegate' в контейнере рядом с элементами 'li' (например,' ul' или 'ol', в котором они находятся). С jQuery 1.7 или выше вы можете использовать 'on', а не' делегат', хотя лично я предпочитаю ясность первого. Но в этом примере JSBin, который я использовал, используется 'live', так как это то, что вы используете. –