jquery传递相互函数的参数

时间:2017-08-21 15:01:48

标签: javascript jquery

我在Jquery中有两个函数可以在点击时将div更改为textarea并在模糊时将其设为div。我需要保存id的{​​{1}}并在嵌套函数中使用它。如何在这两个函数之间传递div?  这是我的代码,它将id检测为事件

id

1 个答案:

答案 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;
&#13;
&#13;

这种方法的好处是它可以用于HTML中div.switch的任何实例而不修改JS,它只有两个事件处理程序,而不必添加/删除每次交换元素时都会使用它们。

您可以更进一步,只使用contenteditable div,但这取决于您的网页结构,以及服务器如何设置接收数据。