Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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
Can';“不要让这件事发生”;onchange";on<;选择>;使用javascript工作_Javascript_Jquery_Html_Handlebars.js - Fatal编程技术网

Can';“不要让这件事发生”;onchange";on<;选择>;使用javascript工作

Can';“不要让这件事发生”;onchange";on<;选择>;使用javascript工作,javascript,jquery,html,handlebars.js,Javascript,Jquery,Html,Handlebars.js,我已经尝试了很多方法,但都没有成功 代码如下: JS: 在显示一次之前,当我单击选项时,永远不会显示测试 HTML: <label for="link-ranges">Link target entities</label> <div class="controls" id="rangeDiv"> <select class="span12" id="link-ranges" size="5"></select> </di

我已经尝试了很多方法,但都没有成功

代码如下:

JS:

显示一次之前,当我单击选项时,永远不会显示测试

HTML:

<label for="link-ranges">Link target entities</label>
<div class="controls" id="rangeDiv">
    <select class="span12" id="link-ranges" size="5"></select>
</div>
<script type="text/x-handlebars-template" id="range-list-template">
    {{#if ranges}}
        <select class="span12" id="link-ranges" size="5">
            {{#each ranges}}
                <option value="{{this.id}}">
                    {{this.name}}
                </option>
                {{rangeOption}}
            {{/each}}
        </select>
    {{/if}}
</script>
链接目标实体
{{{#if ranges}}
{{{#每个范围}
{{this.name}}
{{rangeOption}}
{{/每个}}
{{/if}
以下是HTML页面中的结果:

<select class="span12" id="link-ranges" size="5">
    <option value="1">
        data1
    </option>
    <option value="2">
        data2
    </option>
</select>

数据1
数据2


这对于jquery中的更改是无效的语法。还要确保将代码包装在DOM就绪事件中。试试这个:

$(document).ready(function(){
  $("#link-ranges").on('change',function() {
      console.debug("test");
  });
});

在('change',function(){…})上尝试
$('#link ranges')
而不是在jQuery选择器上设置一个
onchange
属性。这并不奇怪。不要使用
$。live
,使用
$。在
@Bic上为什么不请解释我还不知道?@MsiSaurovh该方法自jQuery 1.7以来就被弃用了。Yep:
TypeError:Object[对象对象]没有“live”方法
正如我所说,我尝试了很多方法,但这对我不起作用。(您忘记关闭括号)是的,这是一个巨大的代码,我向您展示了一个很小的元素,其中我无法通过javascript附加事件。我想知道handlebars是否不是原因,因为通过handlebars创建的select与上面的id相同,但在呈现页面时,如果至少有一个元素,则只有一个select,handlebar中的一个。@Ellayer:通过将代码包装到dom ready中来试一试。还要检查控制台中是否存在任何错误。不更改任何内容,并且控制台中没有错误。我知道这应该行得通,这就是我为什么问的原因。^^我不知道该怎么解决这个问题。@ellayer:渲染后检查选择选项的id。
  $( "#link-ranges").live('change',function() {
     console.debug("test");
    };
 $( "#link-ranges").on('change',function() {
     console.debug("test");
    };
$(document).ready(function(){
  $("#link-ranges").on('change',function() {
      console.debug("test");
  });
});