JQuery:删除元素时捕获“刚刚删除”事件

时间:2017-03-06 16:05:20

标签: jquery jquery-ui

我的用例:

  • 我正在使用最后一个jQuery版本(此时为v-3.1.1)。

  • 我正在添加jQuery-UI,因为我需要// of course this is not working // this the event I'm looking for $("#cElement").on("preremove", function () { console.log("01"); }); $("#cElement").on("remove", function () { console.log("02"); }); 事件。

  • 我想我有一个元素列表。可以通过我正在使用的外部库( exampleLib.js )删除一个或多个元素(来自DOM)。

  • 我无法编辑 exampleLib.js 的源代码(它托管在提供商CDN上,并由提供商定期更新)。

  • 我需要捕获正在删除元素之前的 。 像这样的东西(所以当'cElement'被删除时它应该输出'01'然后输出'02':

    $(document).ready(function(){
    
      function preremoveEvent(){
        console.log("Before removing element event... ");
      }
        
      $("#btnRemove").on("click", function () {
        preremoveEvent();
        $("#cElement").remove();
      });
    
      $("#cElement").on("remove", function () {
        console.log("'C' Element was removed");
      });
    
    });

这可能吗?

以下是使用点击事件模拟场景:

#cElement{color: #900; font-weight: bold;}
<button id="btnRemove">Remove "User-C" element</button>
<ul>
	<li data-important="a" data-also-important="aa">User-A</li>
	<li data-important="bb" data-also-important="bb">User-B</li>
	<li id="cElement" data-important="c" data-also-important="cc">User-C</li>
	<li data-important="d" data-also-important="dd">User-D</li>
</ul>

<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
{{1}}

1 个答案:

答案 0 :(得分:0)

如果我理解你,如果在包含exampleLib.js之前绑定自己的on("remove")事件处理程序并且可以在on("remove")上绑定相同的事件处理程序,它应该可以工作。

事件按照它们在jQuery中绑定的顺序进行处理,因此如果先绑定,则首先调用它并模拟所需的“preremoveEvent”。

如果这不是您想要的,请更新您的问题并提供更多详细信息(如Twisty已经询问过)。