2010-02-02 31 views
41

Tôi cố gắng để thay đổi các thuộc tính hình ảnh src sử dụng jQueryLàm thế nào để thiết lập src hình ảnh sử dụng jQuery

jQuery("#imageID").attr('src','http://localhost:8080/images/1/myImage.png'); 

sử dụng đoạn mã trên tôi có thể thay đổi các thuộc tính src, nhưng khi tôi cố gắng này: -

jQuery("#imageID").attr('src',jQuery("#imageBlock").css('background-image')); 

tôi không thể thay đổi src.

cung cấp

alert (jQuery("#imageBlock").css('background-image')); 

lợi nhuận:

url (http://localhost:8080/images/1/myImage.png)

Chỉnh sửa # 1 Chỉ khi tôi sắp sửa chấp nhận các giải pháp. Tôi phải nói, hầu như tất cả các giải pháp làm việc trong FF. Tôi đã thử:

  • lát (4, -1);
  • chia ("(") [1]> sau đó thay thế (")", "");

Tôi đoán những người khác cũng sẽ hoạt động. Nhưng không có giải pháp nào hoạt động trong IE. Lý do được: trong khi FF trả:

url (http://localhost:8080/images/1/myImage.png)

IE Trả:

url ("http://localhost:8080/images/1/myImage.png")

^^ tâm sự trích dẫn tại đây

Bây giờ, những gì có thể là cách chung chung để thiết lập attr src. Tôi có cần kiểm tra trình duyệt nếu nó là IE hay không?

Đây là mã hoạt động.

var src = ""; 
    if (jQuery.browser.msie) { 
     src = jQuery("#imageBlock").css('background-image').slice(5,-2);   
    }else{ 
     src = jQuery("#imageBlock").css('background-image').slice(4,-1); 
    } 
    jQuery("#imageID").attr('src', src); 

Tôi thực sự không thích: x. Nếu có một giải pháp khác, xin vui lòng cho tôi biết hoặc nếu không tôi sẽ chấp nhận giải pháp slice ngay lập tức.

+0

[này] [1] là đơn giản và đến điểm. [1]: http://stackoverflow.com/questions/18867735/how-to-change-image-attrsrc-using-jquery –

Trả lời

34

IMO, slice là thích hợp hơn substring hoặc replace. Hãy thử điều này:

jQuery("#imageID").attr(
    'src', 
    jQuery("#imageBlock").css('background-image').slice(4,-1) 
); 

Ở đây, bạn đang cắt chuỗi ở giữa url(). Xem MDC trên slice để biết mô tả chi tiết về phương pháp.

+0

nó sẽ làm việc trong IE? –

+1

@Rakesh Juyal: Có. Tôi thực sự viết 95% trong IE. Phương thức slice được định nghĩa trong ấn bản ECMAScript thứ 3 và nằm trên MSDN: http://msdn.microsoft.com/en-us/library/6w1bzf9f(VS.85).aspx. –

0

Bạn sẽ cần phải cắt url( và đóng các phần ) để hoạt động.

Vì vậy url(http://localhost:8080/images/1/myImage.png)

trở thành

http://localhost:8080/images/1/myImage.png

Bạn có thể làm điều này với một chuỗi con, một regex thay thế hoặc bất kỳ phương pháp mà bạn chọn.

http://www.w3schools.com/jsref/jsref_replace.asp

lẽ:

jQuery("#imageID").attr('src',jQuery("#imageBlock").css('background-image').replace('url(','').replace(')',''))

2

Đó là do chuỗi url() được bao quanh nó. Bạn sẽ cần phải cởi nó ra khỏi chuỗi, ví dụ bằng cách sử dụng chức năng thay thế ...

var bgimg = jQuery("#imageBlock").css('background-image').replace('url(', ''); 
bgimg.replace(')', ''); 
7

Bạn cần phải trích xuất các phần url:

var backgroundImage = $("#imageBlock") 
    .css('backgroundImage') 
    .replace(/"/g,"") 
    .replace(/url\(|\)$/ig, ""); 
jQuery("#imageID").attr('src', backgroundImage); 
+0

btw, wht là 'thay thế (/ url \ (| \) $/ig, "");' –

+0

Nó thay thế phần url() của chuỗi bằng "" để bạn có được vị trí của hình ảnh trên sở hữu. –

+0

Có phải loại bỏ '' 'cần thiết không? Tôi luôn nghĩ rằng trình duyệt trả về biểu diễn được phân tích cú pháp của chuỗi url, không có dấu ngoặc kép? Ngoài ra, nếu tôi sai, không nên regex là'/["']/g'? –

Các vấn đề liên quan