我在Jquery中有两个函数可以在点击时将div
更改为textarea
并在模糊时将其设为div
。我需要保存id
的{{1}}并在嵌套函数中使用它。如何在这两个函数之间传递div
?
这是我的代码,它将id
检测为事件
id
答案 0 :(得分:2)
很多更好的方法是使用委托事件处理程序在类型之间切换元素,如下所示:
$(document).on('click', 'div.switch', function() {
var $textarea = $('<textarea />', {
class: 'switch',
html: $(this).html(),
id: this.id
});
$(this).replaceWith($textarea);
$textarea.focus();
}).on('blur', 'textarea.switch', function() {
var $div = $('<div />', {
class: 'switch',
html: this.value,
id: this.id
});
$(this).replaceWith($div);
cool_function(this.id, this.value);
});
function cool_function(id, html) {
// your logic here...
console.log(id, html);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="switch" id="foo">Foo <strong>bar</strong></div>
<div class="switch" id="foo">Fizz buzz</div>
&#13;
这种方法的好处是它可以用于HTML中div.switch
的任何实例而不修改JS,它只有两个事件处理程序,而不必添加/删除每次交换元素时都会使用它们。
您可以更进一步,只使用contenteditable
div,但这取决于您的网页结构,以及服务器如何设置接收数据。