<跨度>在第二行之后中断行
<span> breaking line after second line
代码:http://jsfiddle.net/MuHvy/
Javascript:
$(document).ready(function () {
$(".addTag").click(function () {
$('.questao').html($('.questao').html() + ' <span contentEditable="false" class="tagResp"> </span> ');
$('.questao').focus();
});
});
跨度Css:
border:2px solid #dadada;
border-color:#9ecaed;
border-radius:7px;
display: inline-block;
height: 10px;
width: 50px;
padding:5px;
margin-top:3px;
box-shadow:0 0 10px #9ecaed;
white-space:nowrap;
此示例应在用户单击按钮时在当前行中创建一个标记。
问题:在 secound 行之后,jquery 出于某种原因创建的 Tag 会跳转到新行,而不是停留在同一行中。
例:
~错~
randomtext randomtext <span>tag</span> <br>
randomtext <br>
<span>tag</span>
应该是:
randomtext randomtext <span>tag</span> <br>
randomtext <span>tag</span>
另一个问题是:
jquery函数.focus((转到文本的开头,应该是结尾。
谢谢!我希望有人能帮助我。
HTML5中实现contentEditable
存在问题
通过查看此链接 http://jsfiddle.net/MuHvy/10/您可以单击测试按钮,它准确地报告了您的期望,在框中添加一些文本,然后再次单击测试按钮,您将看到因为该框失去了焦点,浏览器添加了额外的<br>
标签。
我找不到有关焦点丢失实施 http://www.w3.org/TR/2008/WD-html5-20080610/editing.html
的详细信息但是,您可以通过编写一个函数来在添加下一个元素之前修剪尾随<br>
,从而抢占后固定<br>
标签,但这在浏览器之间可能有所不同
所以Jason P在看你的HTML,我也在看它。我希望这就是你想要的。我在 css 中添加了一个display : inline
到contentEditable
字段中的任何div
。因此,即使在按 enter
并创建了 div
元素后,该元素也将是内联的。
更新的小提琴:http://jsfiddle.net/MuHvy/4/(在chrome 23和IE10上测试(
同样,对于FF和Safari,您可能希望将<br>
替换为''
,然后在单击发生时添加span
。
对于IE9:div
本身看起来很奇怪,所以让我们忽略它。
对于焦点问题,请看这个问题:jquery 在内容可编辑的div 中设置光标位置。这正是您所需要的。希望这有帮助!
你将不得不做一些后处理来修复它。HTML 对空格不敏感,因此从 HTML 文档(以及 jQuery 写入 HTML 文档(的角度来看,这是:
randomtext randomtext <span>tag</span>
randomtext
<span>tag</span>
而这个:
randomtext randomtext <span>tag</span>
randomtext <span>tag</span>
功能相同。如果你真的对空格敏感,你可能要考虑使用 text(( 而不是 html((,并写入文本区域而不是div 或任何你正在使用的东西。
对于您的最后一个问题,您可以在此处找到您寻求的答案:j查询设置文本区域中的光标位置
编辑:
在@Gorfl添加换行符实际上是换行符之后,我做了更多的检查。似乎问题是由于浏览器处理内容可编辑的方式造成的。在 Firefox 中,每行都以<br>
结尾 - 无论您是否按回车键。在 chrome 中,每行都换成一个div。如果你想要一个可靠的跨浏览器解决方案,我认为你将不得不不使用contentEditable。相反,只需为按键或按键事件附加一个侦听器,并让它将按下的键复制到div 正文。这样,您就可以完全控制其显示方式。
我能够使用
$('br[type="_moz"]').remove();
出于某种原因,div 每次都会在末尾创建一个类型为 _moz 的 br。
Jquery:
$(document).ready(function () {
$(".addTag").click(function () {
$('br[type="_moz"]').remove();
$('.questao').html($('.questao').html() + ' <span contentEditable="false" class="tagResp"> </span> ');
$('.questao').focus();
});
});
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 在chrome.tabs.onCreated之后加载HTML页面
- 在Jquery detachment()和appendTo()之后定位元素
- AngularJS:ng之后,重复$scope值未按预期更新
- 为什么元素的宽度在页面加载之后和那一刻之后不同
- 没有在Angular应用程序中定义firebase(在firebase迁移之后)
- 高亮显示与数组字符串一起使用时文本插件中断
- Javascript复选框函数:;缺少:在属性id之后"
- 在刚刚调用的append函数之后,jquery.height()不会返回实际值
- AngularJS ui路由器html5模式中断路由
- 递归函数中断
- Javascript-在文本区域中断,但不在段落中中断
- 正在链接添加了以下内容::在之后
- JQuery hide()在show()之后不起作用,反之亦然
- 未执行Ajax循环的Javascript之后的代码
- 如何在`window.open`之后执行回调
- JqTree在nodeUpdate之后的拖动中中断
- 在每组三个图像之后添加中断 jquery
- <跨度>在第二行之后中断行
- 内容导航在第一级之后中断