为什么jquery脚本不起作用?

时间:2013-11-07 08:03:13

标签: javascript jquery html css

为什么jQuery脚本在我的jsfiddle中工作但不在我的页面中?

我做了什么:尝试了不同版本的JQuery ......制作了剧本

所以我有这个测试页面:

头部

   <!-- Scripts -->
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
        <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
           <style>

            select #canselect_code {
                width:200px;
                height:200px;
            }
            .fr {
                float:right;
            }
            .fl {
                float:left;
            }


        </style>

        <script>
$(document).ready(function(){
            $('[id^=\"btnRight\"]').click(function (e) {

    $(this).prev('select').find('option:selected').remove().appendTo('#isselect_code');

});

$('[id^=\"btnLeft\"]').click(function (e) {

    $(this).next('select').find('option:selected').remove().appendTo('#canselect_code');

});

});
        </script>


</head>

身体部位

 <div>
    <select id='canselect_code' name='canselect_code' multiple class='fl'>
        <option value='1'>toto</option>
        <option value='2'>titi</option>
    </select>
    <input type='button' id='btnRight_code' value='  >  ' />
    <br>
    <input type='button' id='btnLeft_code' value='  <  ' />
    <select id='isselect_code' name='isselect_code' multiple class='fr'>
        <option value='3'>tata</option>
        <option value='4'>tutu</option>
    </select>
</div>

JSFIDDLE HERE

现在我的问题是:为什么代码在JsFiddle中工作但不在我的文档中?

感谢您的回答!

编辑:添加了文档就绪功能..但仍无效!

8 个答案:

答案 0 :(得分:7)

Samuel Liew是对的。 有时jquery与其他jqueries冲突。 要解决这个问题,你需要按照这样的顺序将它们放在一起,使它们不会相互冲突。 做一件事:在谷歌浏览器中打开您的应用程序并检查右下角是否有红色标记错误。 哪种错误是什么?

答案 1 :(得分:7)

这对我有用:

<script>
     jQuery.noConflict();
     // Use jQuery via jQuery() instead of via $()
     jQuery(document).ready(function(){
       jQuery("div").hide();
     });  
</script>

原因:&#34;许多JavaScript库使用$作为函数或变量名,就像jQuery一样。在jQuery的情况下,$只是jQuery的别名,所以所有功能都可以在不使用$&#34;的情况下使用。

在此处阅读完整原因:https://api.jquery.com/jquery.noconflict/

如果这解决了您的问题,可能是其他图书馆也在使用$。

答案 2 :(得分:6)

这很好用。只需在document.ready函数中插入jquery代码。

 $(document).ready(function(e) {   
    // your code here
 });

example:

jquery的

    $(document).ready(function(e) {   

      $('[id^=\"btnRight\"]').click(function (e) {    
        $(this).prev('select').find('option:selected').remove().appendTo('#isselect_code');    
      });

      $('[id^=\"btnLeft\"]').click(function (e) {
        $(this).next('select').find('option:selected').remove().appendTo('#canselect_code');
      });

    });

HTML

    <div>
        <select id='canselect_code' name='canselect_code' multiple class='fl'>
            <option value='1'>toto</option>
            <option value='2'>titi</option>
        </select>
        <input type='button' id='btnRight_code' value='  >  ' />
        <br>
        <input type='button' id='btnLeft_code' value='  <  ' />
        <select id='isselect_code' name='isselect_code' multiple class='fr'>
            <option value='3'>tata</option>
            <option value='4'>tutu</option>
        </select>
    </div>

答案 3 :(得分:2)

将脚本包装在ready函数中。 jsFiddle会自动为您完成。

$(function() {
    $('[id^=\"btnRight\"]').click(function (e) {
        $(this).prev('select').find('option:selected').remove().appendTo('#isselect_code');
    });

    $('[id^=\"btnLeft\"]').click(function (e) {
        $(this).next('select').find('option:selected').remove().appendTo('#canselect_code');
    });
});

这就是为什么你不应该使用第三方工具,除非你知道它们为你自动化/简化了什么。

答案 4 :(得分:1)

这可能不是您正在寻找的答案,但可能会帮助那些jquery无法正常工作,或有时工作而不是其他时间工作的人。

这可能是因为您的jquery尚未加载并且您已开始与该页面进行交互。要么将jquery放在头顶(可能不是一个好主意),要么使用加载器或微调器来阻止用户与页面交互,直到整个jquery加载完毕。

答案 5 :(得分:0)

<script type="text/javascript" >
    do your codes here  it will work..
    type="text/javascript" is important for jquery 
<script>

答案 6 :(得分:-1)

使用noConflict()方法

例如:jQuery.noConflict()

并通过jQuery()而不是通过$()

使用jQuery

例:jQuery('#id').val();而不是$('#id').val();

答案 7 :(得分:-2)

如果你有一些与jQuery冲突的其他脚本用你的代码包装

(function($) {
    //here is your code
})(jQuery);