2013-03-14 36 views
9

Cơ hội của tôi rất mỏng nhưng tôi đã thử một vài giải pháp qua Google nhưng không có cách nào sửa chữa phương thức 'Loại không bắt buộc: Không thể gọi' 'không xác định' chức năng, vô danh:Tuy nhiên, một 'Loại lỗi không thể bắt buộc khác: Không thể gọi phương thức' áp dụng 'không xác định'

enter image description here

Nó hoạt động nếu ngày của riêng mình với không JS khác, nhưng khi kết hợp trên cùng một trang như kịch bản khác mà tôi nhận được lỗi.

Các dòng mã mà nó đề cập là những điều sau với dòng 32 là thủ phạm. Dòng 32 là dòng này - if (resizeTimeout) { clearTimeout(resizeTimeout); }:

var $event = $.event, resizeTimeout; 

    $event.special.smartresize = { 
     setup: function() { 
      $(this).bind("resize", $event.special.smartresize.handler); 
     }, 
     teardown: function() { 
      $(this).unbind("resize", $event.special.smartresize.handler); 
     }, 
     handler: function(event, execAsap) { 
      // Save the context 
      var context = this, 
       args = arguments; 

      // set correct event type 
      event.type = "smartresize"; 

      if (resizeTimeout) { clearTimeout(resizeTimeout); } 
      resizeTimeout = setTimeout(function() { 
       jQuery.event.handle.apply(context, args); 
      }, execAsap === "execAsap"? 0 : 100); 
     } 
    }; 

Trả lời

4

Đoán bạn đang tải phiên bản mới hơn của jQuery. Có vẻ như là jQuery 1.9 và sau đó không có thuộc tính jQuery.event.handle.

Theo hiểu biết của tôi, đây không bao giờ là tài sản được hỗ trợ.

http://jsfiddle.net/xPJN4/

+0

Ok, chúc mừng cho điều này. Mã đó được lấy từ một hướng dẫn sử dụng v1.8.3. Điều gì sẽ là một lựa chọn tốt cho mã sống đó? – egr103

+0

@ egr103: Tôi không chắc phương pháp đó có tác dụng gì, vì vậy tôi không thể đề xuất phương án thay thế. Thật tệ khi một hướng dẫn quyết định sử dụng các tính năng không được hỗ trợ. –

+0

Tôi cũng vậy. Oh well. Tôi thậm chí đã xóa dòng đó nhưng nó không sửa chữa những gì tôi hy vọng nó sẽ sửa chữa. – egr103

10

tôi quản lý để con số này ra bằng cách nhìn vào mã, có một phương pháp gọi là "mô phỏng" mà bạn có thể sử dụng để "cõng trên một sự kiện của nhà tài trợ để mô phỏng một tên khác.", "Fake originalEvent để tránh điểm dừng của nhà tài trợ, nhưng nếu sự kiện mô phỏng ngăn chặn mặc định thì chúng tôi cũng làm như vậy đối với nhà tài trợ. " Đây đánh tôi như là mục đích của "thiết lập các loại sự kiện trong hướng dẫn Brandon Aaron của

Thay vì:

event.type = "myType"; 
jQuery.event.handle.apply(this, arguments); 

Sử dụng:

jQuery.event.simulate('myType', this, event); 
0

tôi gặp phải lỗi này khi tôi vô tình nạp phiên bản mới nhất trong số jquery trong đầu, sau đó tải phiên bản cũ hơn của jquery sau phiên bản cũ. Phiên bản cũ hơn không có các phương thức tôi cần từ phiên bản mới hơn.

0

Tôi gặp lỗi này khi sử dụng các phiên bản cũ hơn của jQuery và masonry.min.js - Tôi không còn mã chưa được rút gọn!

Thay thế:

b.event.handle.apply(d,f) 

Với

b.event.simulate('smartresize', d, f) 

Sắp xếp các vấn đề và các kịch bản đang làm việc tốt bây giờ, tín dụng cho @ karl-Forshaw cho việc sửa chữa ... Tôi sẽ đăng bài replay nhưng thiếu danh tiếng để làm như vậy!