11

为什么 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 在这里

现在我的问题是:为什么代码在 JsFiddle 中有效,但在我的文档中无效?

感谢您的回答!

编辑:添加了文档准备功能..仍然不起作用!

4

8 回答 8

13

塞缪尔·刘是对的。有时 jquery 会与其他 jquery 发生冲突。要解决此问题,您需要将它们按顺序排列,以免它们相互冲突。做一件事:在谷歌浏览器中打开您的应用程序并检查右下角带有红色标记的错误。那是哪种错误?

于 2013-11-07T08:11:57.720 回答
11

这对我有用:

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

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

在这里阅读完整的理由:https ://api.jquery.com/jquery.noconflict/

如果这解决了您的问题,则很可能另一个库也在使用 $。

于 2015-06-10T02:10:56.707 回答
8

这工作正常。只需在 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>
于 2013-11-07T08:42:01.693 回答
3

将您的脚本包装在 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');
    });
});

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

于 2013-11-07T08:05:19.130 回答
1

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

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

于 2017-05-07T01:26:12.887 回答
-1

使用noConflict()方法

前任:jQuery.noConflict()

并使用 jQuery viajQuery()而不是 via$()

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

于 2017-04-10T06:38:24.873 回答
-1
<script type="text/javascript" >
    do your codes here  it will work..
    type="text/javascript" is important for jquery 
<script>
于 2017-11-22T14:17:30.277 回答
-2

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

(function($) {
    //here is your code
})(jQuery);
于 2013-11-07T08:15:06.757 回答