Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:未触发事件侦听器_Javascript_Jquery - Fatal编程技术网

Javascript jQuery:未触发事件侦听器

Javascript jQuery:未触发事件侦听器,javascript,jquery,Javascript,Jquery,我正在尝试使用Jquery向html元素添加事件侦听器 test.html 现在当我打开file:///home/ronnie/check/popup.html 如果我选择任何一个选项,我的jquery函数都不会被触发,我只会得到函数外的弹出窗口 我在JSFIDLE中尝试了相同的代码,效果非常好 所以,我的问题是为什么它在chromium中不起作用。您在test.js中选择$options,它在构建之前在标记中定义。jQuery有一个函数,可以等待所有内容都构建完成,以便您可以选择元素: $(d

我正在尝试使用Jquery向html元素添加事件侦听器

test.html

现在当我打开file:///home/ronnie/check/popup.html 如果我选择任何一个选项,我的jquery函数都不会被触发,我只会得到函数外的弹出窗口

我在JSFIDLE中尝试了相同的代码,效果非常好

所以,我的问题是为什么它在chromium中不起作用。

您在test.js中选择$options,它在构建之前在标记中定义。jQuery有一个函数,可以等待所有内容都构建完成,以便您可以选择元素:

$(document).ready(function() {
  // contents of test.js
});

您是否已将更改功能放入documentready中

试试这个

alert("outside function");

$(document).ready(function(){
    $('#options').change(function() {
        alert("inside function");
        var x = $('#options option:selected').text();
        alert(x);
    });
});

DOM尚未加载。您需要使用.ready函数-


我怀疑原因可能是:

在html文件中执行此操作时,尚未定义选项select标记,因此onchange函数未正确注册。因此,请在定义select标记后重试


或者选择$document.readyfunction{},它将提供所需的结果。

将代码放入$document.ready中

$(document).ready(function(){
    alert("outside function");
    $('#options').change(function() {

        alert("inside function");
        var x = $('#options option:selected').text();
        alert(x);
    });
})

使用此代码可以正常工作,请确保始终在之后编写

    <html>
    <head>
      <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
    <body>

     <select id="options" >                                                                                                                   
             <option value="volvo">Volvo</option>                                                                                                  
             <option value="saab">Saab</option>
             <option value="mercedes">Mercedes</option>
             <option value="audi">Audi</option>
          </select>
     <script>
       $('#options').change(function() {

        alert("inside function");
        var x = $('#options option:selected').text();
        alert(x);
    });
    </script>
    </body>
    </html>

它在我的电脑中运行良好这可能是原因,所以你的答案是一个解决方案。实际上,jQuery为您编写的内容提供了一个快捷方式:$function{…};而不是$document.readyfunction{…};。抱歉,直到我输入其他人的答案时,我才得到任何更新。@AmitKhanna:因为事情发生得很快。不能仅仅因为回答问题的人比第一个回答问题的人晚几秒就判断他/她是否回答了问题。@roXon:MattG在第一个回答问题后5秒回答了问题,我想你的评论在这里是毫无意义的。@roXon:看一下时间戳。
alert("outside function");
$(function(){
  $('#options').change(function() {

    alert("inside function");
    var x = $('#options option:selected').text();
    alert(x);
  });
});
$(document).ready(function(){
    alert("outside function");
    $('#options').change(function() {

        alert("inside function");
        var x = $('#options option:selected').text();
        alert(x);
    });
})
    <html>
    <head>
      <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
    <body>

     <select id="options" >                                                                                                                   
             <option value="volvo">Volvo</option>                                                                                                  
             <option value="saab">Saab</option>
             <option value="mercedes">Mercedes</option>
             <option value="audi">Audi</option>
          </select>
     <script>
       $('#options').change(function() {

        alert("inside function");
        var x = $('#options option:selected').text();
        alert(x);
    });
    </script>
    </body>
    </html>