Javascript 文本区域的内联编辑–;如何取得身份证?
我在网页上使用内联编辑。一切都正常,除了我不知道如何获取将更改保存到数据库(通过Django)所需的项目的Javascript 文本区域的内联编辑–;如何取得身份证?,javascript,jquery,Javascript,Jquery,我在网页上使用内联编辑。一切都正常,除了我不知道如何获取将更改保存到数据库(通过Django)所需的项目的id HTML如下所示: <div id="remark14756" class="remark" data-cid="14756"> Sample Text </div> 示例文本 这就是JavaScript: <script src="/static/inline-edit.jquery.js"></script> <s
id
HTML如下所示:
<div id="remark14756" class="remark" data-cid="14756">
Sample Text
</div>
示例文本
这就是JavaScript:
<script src="/static/inline-edit.jquery.js"></script>
<script>
$(".remark").inlineEdit({
type: 'textarea',
onChange: function (e, text, html) {
// Executes when exiting inline edit mode and a change has been made
c_id = $(this).attr("data-cid");
alert("Test: ", c_id)
}
});
</script>
$(“.remark”).inlineEdit({
键入:“textarea”,
onChange:函数(e、文本、html){
//退出内联编辑模式并进行更改时执行
c_id=$(this).attr(“数据cid”);
警报(“测试:,c_id)
}
});
显然,$(this)
在这种上下文中不起作用。我尝试了所有的方法,搜索了很多,但是我找不到正确的方法。有人知道答案吗?他们说:
onChange(this,text,html)
-退出内联编辑模式并进行更改时执行
使用这个
很容易引起误解
因此,第一个参数实际上是元素
$(".remark").inlineEdit({
type: 'textarea',
onChange: function (elem, text, html) {
// `this` refers to inlineEdit instance plugin
// `elem` is the currently edited element
const c_id = $(elem).attr("data-cid");
alert(c_id); // 14756
}
});
该插件未按预期的“jQuery插件”方式运行。通常正确编写的插件应该:
- 将所有方法绑定到被调用元素
- (对于事件方法)第一个参数应始终引用原始事件李>
this
关键字引用它来获取本机JS元素,或者在公开的公共方法中执行$(this)
,就像我们期望从本机jQuery方法中获得的一样,并且可以访问事件(即:在我们使用箭头函数提取currentTarget
的情况下非常有用,因为这个
关键字不存在)
显然没有在该插件中实现。我根据您的建议更改了代码,现在我得到了ID。太好了,非常感谢!您的解释也很有帮助。@RalfZosel非常欢迎您。PS:感谢您的帮助jqInlineEdit可以工作,但不幸的是,只要我使用ID作为选择器,如
$(“#remark1”).inlineEdit…
。使用类似于$(“.remark”)的类.inlineEdit…
和多个文本,它会变得混乱,总是打开最后一个条目。我想这是您上面描述的问题的结果。我发现另一个脚本在任何情况下都可以正常工作,但我有一个非常类似的问题。我想,我将在单独的帖子中描述。这是新帖子:
$someElem.on('click', function(evt) {
const $el = $(this); // what we're used to
});
$someElem.on('click', (evt) => {
const $el = $(evt.currentTarget); // the importance of always passing the Event as first param
});