一个经典的jQuery错误 - 未捕获的类型错误:未定义不是一个函数

A classical jQuery error - Uncaught TypeError: undefined is not a function

本文关键字:错误 一个 未定义 函数 类型 经典 jQuery      更新时间:2023-10-22

我的页面中有一些JS函数,我得到了这个错误。我删除了除有罪行之外的所有内容,但仍然收到此错误。

我搜索了这个论坛和网络,所以我尝试添加:分号,(jQuery(,将 $ 添加到函数参数中......我仍然收到同样的错误。

我使用在我的标头中声明的jQuery 1.11.2。

这是那些问的人的完整代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>  
<script type= "text/javascript" src= "jquery-1.11.2.js"></script>
<link rel="stylesheet" href="style.css" />
</head>
<body>
    
<h2>Exporter les données d'une base<BR><BR></h2>
<HR></HR>
<form method="post" action="execute_function.php" enctype="multipart/form-data">
<?php
include 'functions.php';
propose_choix_BDD();
?>
<BR>
<div class="camp">
</div>
<div class="fichier">
</div>
<BR><BR><BR>
<div class="button">
<?php
submit_button("Export_KML");
submit_button("Export_csv");
?>  
</div>
<input type= "hidden" name="export_campagne" value="true" />
</form>

    <script type="text/javascript">
    console.log("I start");
    $(function(){
        $('.camp').on('change',"#id_camp_ch",function()  { //error here
            alert ("I change !");
            }); 
    console.log("I stop");
    }); 
    </script>
</body>
<?php
retour_index();
?>

propose_choix_BDD()回显了包含 DB 的下拉列表,div class="camp"其中包含一些在 DB 菜单中检测到 jQuery 更改时回显的表(出于清晰原因删除了脚本(。因此,.camp是动态填充的。一旦是,我希望我的JS在下拉菜单中检测到用户所做的更改。 #id_camp_ch 是包装此菜单的<select> ID 的名称。

我同意,当我削减了一部分代码时,.camp将保持空白。换句话说,#id_campagne_choix永远不会存在。但即使我使用完整的脚本,它也不会在开始时存在。所以我不应该得到这样的错误...

我还尝试将所有脚本放在文档的底部。

如果我删除$( ".camp" )...})行,则会显示警报。

如果你对此有任何想法,那就太棒了:)

他们的错误,请尝试以下代码...

onload = function() {
            $( ".camp" ).on("change","#id_camp_ch",function()  {
                alert ("change !");
                });             
        };

但相反,你应该使用

$(document).ready(function(){
$( ".camp" ).on("change","#id_camp_ch",function()  {
                    alert ("change !");
                    }); 
});

当 DOM 准备就绪时,onchange将触发。

我终于再次下载了jQuery v2.1.1。 它有效!感谢您的帮助

我不明白更改div的目的,因为div没有更改侦听器。

您可以使用以下示例之一来提供帮助:

<form method="post" action="execute_function.php" enctype="multipart/form-data">
<BR>
change me!
<input type="text" class="camp"><br>
or me
<input type="text" id="id_camp_ch"><br>
dont change me! i won't make anything!
<input type="text" id="id_camp_ch" class="camp">
</id>
<div class="fichier">
And never change ME!!!!!
<select id="test">
<option></option>
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</div>
<BR><BR><BR>
<div class="button">
</div>
<input type= "hidden" name="export_campagne" value="true" />
</form>
<script type="text/javascript">
$('#id_camp_ch.camp').change(function()  {
alert ("I said to u dont change me!!!"); //or do what u need
});
</script>

我还认为div 标签没有更改侦听器,这就是它抛出错误的原因。

如果id_camp_ch是带有风格阵营的div的孩子,或者其他东西,那么您应该使用.camp>#id_camp_ch而不是.camp#id_camp_ch.

我认为您可以通过使用正确的选择器而不是使用 .on() 函数来解决它。

在使用之前包含 jquery。

享受:)

相关文章: