javascript - 修改 JQuery 函数以在单击时运行
问题描述
我一直在努力修改此功能,使其在单击具有“boldbutton”类的按钮时运行。每当我修改它时,功能都会发生变化。我真的好像这个函数需要以 jQuery('textarea') 开头。
我将如何修改此功能,使其
a) 保留其功能,并且,
b) 仅在单击 $('.boldbutton') 时运行
<script>
jQuery('textarea').on('keydown', function(e) {
e.preventDefault();
var text = jQuery(this).val();
var start = this.selectionStart;
var end = this.selectionEnd;
var selection = '<b>' + text.substring(start, end) + '</b>';
text = text.substring(0, start) + selection + text.substring(end);
jQuery(this).val(text);
this.selectionStart = start;
this.selectionEnd = start + selection.length;
});
</script>
非常感谢你的帮助!!
解决方案
您可以使用该方法将单击事件侦听器添加到您的按钮.click()
。
除了this
在代码中定位(this
现在指的是单击的按钮,而不是 textarea),您可以使用$("textarea")
. 要访问 vanilla 属性,您可以使用$("textarea")[0]
which 将允许您使用.selectionStart
和selectionEnd
.
请参阅下面的工作示例:
$('.boldbutton').click(function() {
var $textarea = $("textarea");
var text = $textarea.val();
var start = $textarea[0].selectionStart;
var end = $textarea[0].selectionEnd;
var selection = '<b>' + text.substring(start, end) + '</b>';
text = text.substring(0, start) + selection + text.substring(end);
$textarea.val(text);
$textarea.selectionStart = start;
$textarea.selectionEnd = start + selection.length;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea></textarea>
<br />
<button class="boldbutton">Bold</button>
推荐阅读
- android - ViewModel 和 ConstraintLayout Beta 2。不兼容的类型:Activity 无法转换为 LifecycleOwner
- javascript - 在控制台上没有报告错误,如何确定我的 JS 的哪一部分会随着时间的推移减慢网站速度
- ruby-on-rails - 活动存储 - 阻止下载 - 尽可能在浏览器中打开文件
- angular - 量角器中的 404 用于已知工作的非根 Angular 页面
- python-3.x - 在一张图中绘制三个数据库 Python
- python - 有没有办法在不改变图像的情况下将灰度图像转换为 RGB 图像?
- java - 在java中创建每天在特定时间运行的Kafka流
- ruby-on-rails - 如何让rails逐块从aws s3中获取数据并将其作为pdf下载文件发送到ti浏览器?
- google-cloud-platform - Google Cloud Run / 域映射是否支持 ALIAS 记录?
- java - 在 Sugeno 方法上使用 java 和 jfuzzylogic 库