两个jQuery函数不能在单个<script>标记中工作

时间:2017-03-22 23:03:15

标签: javascript jquery

我有一个要求

&#xA;&#xA;
    &#xA;
  1. 选择特定的选项列表项目,我需要用显示/隐藏一个部分复选框
  2. &#xA;
  3. 选中复选框,在步骤1中,我还需要显示/隐藏其他部分。
  4. &#xA;
& #xA;&#XA;
&#XA;

这就是我尝试的

&#xA;
&#xA;&#xA;
 &lt; script&gt;&#xA; j $('#type') .on('change',function()&#xA; {&#xA;&#xA; if(this.value =='Technical Issue'){&#xA; j $('#techtroubleshootoption')。show ();&#xA; j $('#forceemailcase')。show();&#xA; j $('#main')。hide();&#xA;}&#xA; else {&# xA; j $('#techtroubleshootoption')。hide();&#xA; j $('#forceemailcase')。hide();&#xA; j $('#main')。show();& #xA;}&#xA;});&#xA; j $('#chkforcemailcase')。click(function()&#xA; {&#xA; if(this.checked){&#xA; j $('#techtroubleshootoption')。hide();&#xA; j $('#forceemailcase')。show();&#xA; j $('#main')。show();&#xA; }&#xA; else {&#xA; j $('#techtroubleshootoption')。show();&#xA; j $('#forceemailcase')。show();&#xA; j $('# main')。hide();&#xA;}&#xA;});&#xA;&lt; / script&gt;&#xA;  
&#xA;&#xA; < p>第一个功能正在工作,在选择了所需的值时,它显示/隐藏了下面的部分,bu在选择复选框时,它没有做任何事情。

&#xA;&#xA;
&#xA;

解决方法

&#xA;
&#xA;&#xA;

如果将第二个函数放入另一个&lt; script&gt; < / code>标签它的工作原理很好。现在,我的问题是为什么它不能在相同的&lt; script&gt; 标记中工作,并且它是正确的方式来声明多个&lt; script&gt; 标记对于每个功能(这对我来说听起来不对)。

&#xA;

2 个答案:

答案 0 :(得分:2)

您需要使用$(document).ready()

包装所有javascript
$(document).ready(function() {

    j$('#type').on('change', function() {
        if(this.value == 'Technical Issue'){ 
            j$('#techtroubleshootoption').show();
                j$('#forceemailcase').show();
            j$('#main').hide();
        } 
        else{
            j$('#techtroubleshootoption').hide();
            j$('#forceemailcase').hide();
            j$('#main').show();
        } 
        });
        j$('#chkforcemailcase').click( function()
        {
        if(this.checked){ 
            j$('#techtroubleshootoption').hide();
                j$('#forceemailcase').show();
            j$('#main').show();
        } 
        else{
            j$('#techtroubleshootoption').show();
            j$('#forceemailcase').show();
            j$('#main').hide();
        }   
    });
});

答案 1 :(得分:1)

如果要初始化事件,则应在文档准备就绪时执行此操作,而不是直接在脚本标记中执行。脚本标签通常是一种竞争条件,当涉及在呈现DOM时可用的元素时。

使用$(document).ready()