Tôi đang sử dụng một mã mà trông như thế:jquery.width return 0 trên hình
img.load(function(){
// do some stuff
$(this).width();
});
Trong callback của tôi kích thước hình ảnh luôn luôn là 0. Nó có thể có cái gì để làm với nó, nhưng hình ảnh của tôi là được tải cục bộ.
Nhưng trong thực tế, nếu tôi làm điều này.độ rộng, tôi sẽ nhận được chiều rộng dự kiến và sau đó tôi có thể làm một số loại tính toán từ đây để thay đổi cửa sổ extjs của tôi.
Sau một số lần thử, tôi nhận ra rằng nếu tôi làm $ (điều này) tất cả các thuộc tính tôi thay đổi dường như không có bất kỳ hiệu ứng nào cả.
làm $(this).width(40);
sẽ không thay đổi chiều rộng của hình ảnh nhưng làm this.width = 40
sẽ thay đổi chiều rộng của hình ảnh của tôi. Nó giống như làm $(this)
đang sao chép HTMLImageElement của tôi trong một phần tử mới và những thay đổi đó sẽ chỉ được áp dụng nếu tôi thêm vào dom một lần nữa để thay thế hình ảnh cũ.
Tôi không biết chắc điều gì đang xảy ra ở đó.
Sửa
Đây là những gì biến img
tôi chứa.
img = $('<img>');
img.attr('src', '....image');
Chỉnh sửa 2
này không thực sự thay đổi thực tế rằng jQuery không xử lý kích thước hình ảnh cho hình ảnh trong bộ nhớ nhưng tôi cảm thấy nó sẽ là tốt cho bất cứ ai sử dụng ExtJS để không lặp lại của tôi lỗi. Một trong những vấn đề lớn trong trường hợp của tôi là đối tượng img
tôi đã sử dụng là một đối tượng hợp lệ nhưng vì tôi đang sử dụng ExtJs, tôi vô tình tạo ra một sai lầm ngu ngốc. Tôi đã tạo cửa sổ của mình theo cách đó ...
Ext.create('Ext.Window',
// some settings
items: [{
html: img.wrap('<div>').parent().html(),
// etc
Nói cách khác, sự kiện tôi đã tạo là img, nhưng tôi chưa bao giờ thực sự thêm img
vào DOM. ExtJs đã thêm văn bản html vào DOM đã tạo ra một đối tượng mới không thể sửa đổi thông qua sự kiện và vân vân.
Vì vậy, tôi phải tạo một id để tìm phần tử mới và tất cả điều này phải được thực hiện sau khi thực hiện cuộc gọi đến modalWindow.show()
. Sau đó mọi thứ hoạt động hoàn hảo.
Để thay đổi kích thước cửa sổ, nếu kích thước được đặt, bạn có thể đặt chúng trở lại null
và thực hiện cuộc gọi doLayout trên cửa sổ và nó sẽ tính toán lại cửa sổ.
Bạn có thể đăng HTML được liên kết không? Ngoài ra, bạn sẽ không cần jQuery cho điều này. Bạn sẽ có thể truy cập thuộc tính bằng javascript thẳng – pixelbobby
Giá trị của biến 'img' trong mã đó chính xác là gì? Nó được thiết lập như thế nào, nói cách khác? – Pointy
Tham số đầu tiên của ['.load()'] (http://api.jquery.com/load/) phải là URL bạn muốn tải, sau đó là hàm đầy đủ. 'Img' là gì? – sachleen