2012-02-05 38 views
7

Tôi cố gắng để tải hình ảnh dynamiaclly và hiển thị chúng như hình dưới đâyphát hiện nhấp chuột vào một hình ảnh

 var uploader = $('#<%=uploader.ClientId%>').plupload('getUploader'); 
       uploader.bind('FileUploaded', function (up, file, res) { 
       $('#<%=thumbs.ClientId%>').append("<div id=" + file.id + "> 
       <a href='Uploads/" + document.getElementById("<%=currentDirectory.ClientId%>").value + "/" + file.name + "'/> 
       <img src='Uploads/" + document.getElementById("<%=currentDirectory.ClientId%>").value + "/" + file.name + "' width='70' height='55' data-full='Uploads/" + document.getElementById("<%=currentDirectory.ClientId%>").value + "/" + file.name + "'/></div>"); 
    }); 

Đây là đánh dấu của tôi:

<div id="thumbs" class="imgContain" runat="server"> 
    </div> 

Nếu tôi làm theo cách này trên div nó mang lại cho tôi một cảnh báo nhưng không phải trên hình ảnh nhưng trên div:

$('.imgContain').click(function() { 
    alert('You Clicked Me'); 
    }); 

Và tôi đã cố gắng sử dụng cách này nhưng nó vẫn cho tôi bất kỳ rượu bia nào rt thậm chí không phải trên div cũng.

$('.imgContain a').click(function() { 
     alert('You Clicked Me'); 
}); 

Vậy làm cách nào để thực hiện việc này?

+0

theo đánh dấu của bạn, bạn không có 'a' bên trong div với lớp' imgContain ' – Rafay

+0

Như đã thấy trong sự kiện liên kết được tải lên ở trên, bạn có thể tìm thấy . – coder

+0

Bạn có đang chạy $ ('. ImgContain a') không. Nhấp vào (... sau khi hình ảnh được tải? – Daniel

Trả lời

10

bạn nên sử dụng phương pháp on

$('.imgContain').on("click","a,img", function (e) { 
     e.preventDefault(); 
     alert('You Clicked Me'); 
}); 
+0

@ Royi-Tôi đã thử cả hai với 'on' và cũng như 'delegate' nhưng không ai làm việc! – coder

+0

@DotNetter tôi hy vọng bạn có jquery 1.7+ –

+0

@ Royi-Bạn nói đúng! Tôi đang sử dụng 1,7+. – coder

2

Đối với neo <a> s mà bạn nối, youwill cần phải sử dụng .live() để gắn vào nó sự kiện click như:

$('.imgContain a').live("click", function (event) { 
     event.preventDefault(); 
     alert('You Clicked Me'); 
}); 
+0

bởi mnistake ive đã chỉnh sửa (và hoàn nguyên của bạn) xin lỗi –

+0

@ MGA-Tôi đã thử cả hai với 'on' và cũng như 'delegate' nhưng không ai làm việc ra! – coder

+0

@ MGA-Xin lỗi tôi đã có một mstake với mã của tôi và nó hoạt động tốt :) – coder

4

Đó là một chút khó khăn để biết chính xác DOM của bạn trông như thế nào, nhưng tôi đoán bạn thêm hình ảnh vào div với lớp .imgContain. Nếu bạn muốn thêm một sự kiện click vào những hình ảnh mà bạn có thể làm một cái gì đó như thế này:

$('.imgContain').on("click", "img", function() { 
    alert('You Clicked Me'); 
}); 

Như tôi tin rằng bạn đang thêm những hình ảnh động, bạn nên sử dụng phương pháp .on() để ràng buộc sự kiện nhấp chuột, thay vì sử dụng .click().

Lưu ý Nếu vì lý do nào đó đang sử dụng phiên bản trước của jQuery, bạn có thể thay đổi .on() để sử dụng .live() thay thế.

+0

điều này sẽ không giúp ích gì vì img không nằm ở vị trí cũ. bạn sẽ thấy người trả lời của tôi. –

+0

@RoyiNamir Tất nhiên là đúng, cảm ơn! –

0

Tìm hiểu chức năng trực tiếp trong jQuery. và sử dụng mã đó trong mã của bạn ..

jQuery phiên bản 1.4.1 trở lên.

vì các phần tử được đặt trên html động sau khi trang của bạn được tải. Chức năng nhấp chuột không bị ràng buộc.

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