仅在调用callback时在命名的callback函数中评估jquery选择器[duplicate]

ozxc1zmp  于 2023-10-17  发布在  jQuery
关注(0)|答案(2)|浏览(127)

此问题已在此处有答案

Why is callback function executed first in javascript? [duplicate](4个答案)
上个月关门了。
我有以下代码,它将div#B加载到div#a中,然后对div#B执行一些操作:

<html>
    <head>
      <script src="scripts/jquery.js"></script>
    </head>
    <body>
        <script>
            document.addEventListener('DOMContentLoaded', e => {
                $('#a').load('test2.html', {},
                    // function() {
                        // console.log($('#b').attr('id')); // returns "b"
                        // $('#b').html('content in #b');
                        // console.log('completed');
                    // }
                    fillB()
                );
            });
            function fillB(option=null) {
                console.log($('#b').attr('id'));//returns undefined :(
                $('#b').html('content in #b: '+option);
                console.log('completed');
            }
        </script>
        <div id="a">placeholder</div>
    </body>
</html>

其中test2.html包含:

<div id="b"></div>

我的目标是将回调函数(注解掉)改为命名函数fillB(),这样我就可以在其他地方重用代码。但是,当我这样做时,选择器$('#b')undefined。如何让函数fillB()在被调用时正确执行选择器?

**编辑:**我还希望能够控制传递给fillB()的参数。

dsf9zpds

dsf9zpds1#

你可以这样做。它要短得多,做同样的事情,更少的地方出错
我还将vanilla load事件更改为jQuery事件

const fillB = () => {
  $('#b').html('content in #b');
};

$(function() {
  $('#a').load('test2.html', fillB);
});
r7xajy2e

r7xajy2e2#

显然,我必须在一个匿名的回调函数中传递命名的回调函数:

function() { fillB(); }

相关问题