Javascript 如何将匿名jQuery代码转换为命名函数并调用它?

Javascript 如何将匿名jQuery代码转换为命名函数并调用它?,javascript,jquery,Javascript,Jquery,虽然我已经解决了上述问题,但我仍然无法解决我的问题 我的jQuery代码在单独的JS文件[test.JS]中:- }) 现在我已经在我的PHP页面标题中添加了这个js文件 这个代码对我来说很好用。但我已经将这个匿名代码转换为命名函数addTopic 我的新代码修改了[test.js]:-:- 现在我在PHP页面中调用此方法:- <select id="category" class="form-control" onchange="addT

虽然我已经解决了上述问题,但我仍然无法解决我的问题

我的jQuery代码在单独的JS文件[test.JS]中:-

})

现在我已经在我的PHP页面标题中添加了这个js文件

这个代码对我来说很好用。但我已经将这个匿名代码转换为命名函数addTopic

我的新代码修改了[test.js]:-:-

现在我在PHP页面中调用此方法:-

<select id="category" class="form-control" onchange="addTopics()" name="category">
现在新代码不起作用了。请在这个问题上帮助我

提前谢谢

编辑:-

问题范围:

我有jQuery匿名代码。这很好,但我想将匿名jQuery代码转换为命名jQuery函数。这样我就可以调用jQuery函数,而不是自动调用它。

HTML:

不要在html中应用事件处理程序。。这只是坏习惯。取而代之的是使用你需要的东西

<select id="category" class="form-control" name="category">
并将函数单独定义为命名函数。事件处理程序现在将调用它

function addTopics() 
 {
    alert('hi');
    var category_id="category_id="+$("#category").val();

    $.getJSON("get_topic",category_id, function(topic)
    {
        $('#topic').empty();
        $('#topic').append("<option>--- Select Quiz Topic ---</option>");

        for(var t in topic) 
        {
            var option = $('<option />');
            option.attr('value', topic[t].id).text(topic[t].name);
            $('#topic').append(option);
        }

    });
} 

不,您不想调用select元素的onchange。要在页面加载时调用它:

<script src="… jQuery …"></script>
<script src="http://localhost.dev/public/js/test.js"></script>
<script type="text/javascript">
    jQuery(document).ready(addTopics);
</script>

如果要在该元素的更改侦听器中放入任何内容,则只需要函数{var category_id=…;$.getJSONget_topic,…;}部分。但是你。

谢谢大家的帮助……至少我的问题解决了

 function addTopics() 
 {
   var category_id="category_id="+$("#category").val();

   $.getJSON("get_topic",category_id, function(topic)
   {
    $('#topic').empty();
    $('#topic').append("<option>--- Select Quiz Topic ---</option>");

    for(var t in topic) 
    {
        var option = $('<option />');
        option.attr('value', topic[t].id).text(topic[t].name);
        $('#topic').append(option);
    }

});
} 
如果这个方法是错误的,请指导我等待别人的建议

顺便说一句,再次感谢所有人:


愉快的编码。

我不明白你想做什么。将匿名函数更改为命名函数是一回事,但为什么你要尝试删除非常好的不引人注目的JavaScript并用内联JavaScript替换它?在我的项目中有母版页的概念。在母版页标签中,我调用所有js、css文件。这些js文件将自动添加到母版页的所有子页中。所以我想使用命名的jquery函数。但这与OP最初使用的有什么不同?命名函数的价值是什么?这与其说是关于你的答案,不如说是关于OP的目标令人困惑。事实上,我认为OP是这样的,考虑到更改将根据在select中选择的类别载入一组新的主题element@Mathletics当前位置没有太大区别,因为他说代码最初是有效的。据我所知,他只想把它放在一个外部脚本中。感谢您的快速回复。但这段代码对我来说不起作用。它没有添加在更改事件上生成AJAX请求的功能..:恐怕这超出了所贴问题的范围。如果显示警告框,则此问题的要求已填写。如果你想发布另一个问题,可能是在,我相信你会得到一个解决方案兄弟,我添加了警报框只是为了测试目的,无论我的代码是否正常工作……很抱歉混淆,我知道它是为了测试。如果它显示了,那么您就知道如何将匿名jQuery代码转换为命名函数并调用它了?。如果您需要该问题以外的任何内容,请在适当的位置发布另一个问题。我建议把这个带到医院。堆栈交换的这一部分是专门为诸如getJSON响应没有填充到选择列表中这样的问题而设置的。如果您收到了针对原始问题的适当解决方案,请标记一个答案。祝你好运谢谢你的帮助,兄弟:
function addTopics() 
 {
    alert('hi');
    var category_id="category_id="+$("#category").val();

    $.getJSON("get_topic",category_id, function(topic)
    {
        $('#topic').empty();
        $('#topic').append("<option>--- Select Quiz Topic ---</option>");

        for(var t in topic) 
        {
            var option = $('<option />');
            option.attr('value', topic[t].id).text(topic[t].name);
            $('#topic').append(option);
        }

    });
} 
<script src="… jQuery …"></script>
<script src="http://localhost.dev/public/js/test.js"></script>
<script type="text/javascript">
    jQuery(document).ready(addTopics);
</script>
 function addTopics() 
 {
   var category_id="category_id="+$("#category").val();

   $.getJSON("get_topic",category_id, function(topic)
   {
    $('#topic').empty();
    $('#topic').append("<option>--- Select Quiz Topic ---</option>");

    for(var t in topic) 
    {
        var option = $('<option />');
        option.attr('value', topic[t].id).text(topic[t].name);
        $('#topic').append(option);
    }

});
}