lỗi xung đột jQuery

Home Forums Hỏi đáp lỗi xung đột jQuery

This topic contains 6 replies, has 6 voices, and was last updated by Ảnh hồ sơ của Been Young Been Young 3 years, 5 months ago.

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #6803
    Ảnh hồ sơ của princehai
    princehai
    Member

    mình có vấn đề thế này:
    1. < ?php echo $this->Html->script(‘jquery.min’); ?>
    2. < ?php echo $this->Html->script(‘jquery.form’); ?>
    3. < ?php echo $this->Html->script(‘jquery-1.9.1.min’);?>

    phía dưới có thêm 2 script nữa:
    – script1 sử dụng các hàm trong 2 script đã include đầu tiên để làm công việc 1
    – script2 sử dụng các hàm trong script đã include thứ 3 để làm công việc 2
    nếu để thứ tự như vầy thì công việc 1 làm được nhưng công việc 2 không làm được,
    nếu include theo thứ tự 3->1->2 thì công việc 2 làm được nhưng công việc 1 không làm được
    mình có tham khảo một số trang thì mình đoán là bị xung đột, đã giải quyết thêm rồi thêm jQuery thay cho $ ở phía dưới nhưng không thành công…
    Ai biết cách nào khắc phục thì giúp với..

    #8489

    Theo mình bạn nên load 2 script tại 2 thời điểm khác nhau. Cụ thể như sau:

    1. Đầu tiên bạn cho script thực hiện công việc 1 chạy cùng với việc load Script 3.
    2. Sau khi toàn bộ trang đã load xong thì bạn chạy tiếp Script thực hiện công việc thứ 2.

    Để script chạy sau khi trang đã load xong bằng cách đưa script đó vào:

    $(window).load(function(){
      //Script 2...
    })
    

    Ngoài ra bạn cũng nên thử đưa cái script 1 vào thay vì script 2.
    Còn Script 3 thì bạn luôn để nó đầu tiên vì nó là thư viện Jquery.

    #8490
    Ảnh hồ sơ của TheBigBang
    TheBigBang
    Member
    1. <?php echo $this->Html->script('jquery.min'); ?>
    2. <?php echo $this->Html->script('jquery.form'); ?>
    3. <?php echo $this->Html->script('jquery-1.9.1.min');?>

    Chào bạn, theo như bạn nói thì mình thấy Script 1 và 3 hiện tại là trùng nhau mà. Vì chúng đều là thư viện Jquery. Jquery.minjquery-1.9.1.min đều là thư viện Jquery, bạn chỉ sử dụng đc 1 trong 2 thư viện đó mà thôi. Trường hợp này bạn chỉ việc loại bỏ 1 trong 2 thư viện này là đc.

    #8493
    Ảnh hồ sơ của The Cat
    The Cat
    Member

    Bạn thử dùng theo cách này xem.

    Khóa toàn bộ các lệnh thực thi script 2 như sau:

    (function($) {
    
         $(function() 
         {
              // các dòng lệnh thực thi của script 2
             $('#anhmh').live('change', function(){
                $("#preview").html('');
                $("#preview").html('<img src="/football_ticket/webroot/img/loader.gif" alt="Uploading...."/>');
                $("#FootballmatchAddForm").ajaxForm({
                    target: '#preview'}).submit();
    
            });
         });
    
    })(jQuery);
    

    Việc bạn phải làm là mở file Script 2 lên và chèn thêm (function($) { vào dòng đầu tiên và })(jQuery); vào dòng cuối cùng. Mình đã làm và đã thành công. Còn bạn thì sao? :D
    Bạn cũng nhớ bỏ cái dấu phảy ở dòng lệnh cuối như bác TheBigBang nói nhé.

    #8498
    Ảnh hồ sơ của TheBigBang
    TheBigBang
    Member
    <script>
        $(document).ready(function() {
            // create DateTimePicker from input HTML element
            $("#datetimepicker").kendoDateTimePicker({
                value:new Date(),
                format: "dd/MM/yyyy HH:mm",
            });
        });
    </script>
    

    Trường hợp của bạn mình thấy có dư 1 dấu phảy ” , ” ở dòng script cuối(format: “dd/MM/yyyy HH:mm”,). Bạn bỏ dấu phảy đó đi.

    #8499

    Chào bạn, trường hợp như bạn nên thay đổi ở Script 2 như sau:

    <script type="text/javascript" >
             $(document).ready(function() {
                $('#anhmh').live('change', function(){
                    $("#preview").html('');
                    $("#preview").html('<img src="/football_ticket/webroot/img/loader.gif" alt="Uploading...."/>');
                    $("#FootballmatchAddForm").ajaxForm({
                        target: '#preview'}).submit();
    
                });
            });
        </script>
    

    thay đổi thành

    <script type="text/javascript" >
             $(document).ready(function() {
                $('#anhmh').change(function(){
                    $("#preview").html('');
                    $("#preview").html('<img src="/football_ticket/webroot/img/loader.gif" alt="Uploading...."/>');
                    $("#FootballmatchAddForm").ajaxForm({
                        target: '#preview'}).submit();
    
                });
            });
        </script>
    

    Ở đây mình đổi từ .live('change', function){… thành .change(function){

    #8500
    Ảnh hồ sơ của Been Young
    Been Young
    Member
    <script>
            $(document).ready(function() {
                // create DateTimePicker from input HTML element
                $("#datetimepicker").kendoDateTimePicker({
                    value:new Date(),
                    format: "dd/MM/yyyy HH:mm",
                });
            });
        </script>
    

    Ở đây bạn thêm type="text/javascript" vào thẻ <script> và bỏ dấu phảy ở cuối dòng code format: "dd/MM/yyyy HH:mm",

    Còn ở dòng code thứ 2 bạn đổi live thành bind:

    <script type="text/javascript" >
             $(document).ready(function() {
                $('#anhmh').bind('change', function(){
                    $("#preview").html('');
                    $("#preview").html('<img src="/football_ticket/webroot/img/loader.gif" alt="Uploading...."/>');
                    $("#FootballmatchAddForm").ajaxForm({
                        target: '#preview'}).submit();
    
                });
            });
        </script>
    
Viewing 7 posts - 1 through 7 (of 7 total)

You must be logged in to reply to this topic.