2013-10-11 20 views
6

Hiện nay tôi đang chơi với vải html5, mã đơn giản là dưới đây:Làm cách nào để lấy phần tử canvas bằng jquery?

<!DOCTYPE HTML> 
<html> 
<head> 
    <title></title> 
    <script src="Scripts/jquery-2.0.3.min.js"></script> 
    <script> 
     $(function() { 
      //THIS WILL NOT WORK! 
      //var cv = $("#cv"); 

      //THIS WORKS FINE. 
      var cv = document.getElementById("cv"); 

      ct = cv.getContext("2d"); 
      var mText = "hi"; 
      var x = cv.width/2; 
      var y = cv.height/2; 
      ct.textAligh = "center"; 
      ct.fillText(mText, x, y); 
     }); 
    </script> 
</head> 
<body> 
<div style="width:200px; height:200px; margin:0 auto; padding:5px;"> 
    <canvas id="cv" width="200" height="200" style="border:2px solid black"> 
    Your browser doesn't support html5! Please download a fitable browser. 
    </canvas> 
</div> 
</body> 
</html> 

Yếu tố canvas chỉ có thể được chọn theo phương pháp document.getElementById, nhưng phương pháp jQuery không được làm việc. Có cách nào để có được html gốc từ đối tượng jquery hoặc tôi bỏ lỡ bằng cách sử dụng một cái gì đó? Cảm ơn bạn trước!

+2

Bạn phải sử dụng chỉ mục '[0]' để biến đối tượng jQuery thành thành phần DOM 'var cv = $ ('# cv') [0]' – devnull69

+0

@ devnull69 Vâng, nó hoạt động, cảm ơn bạn! – Erxin

Trả lời

13

jQuery $(<selector>) trả về một tập hợp các nút (trên thực tế nó là "đối tượng giả dạng một mảng" as the doc says) vì vậy chỉ cần sử dụng $('#cv').get(0) thay vì document.getElementById("cv")

5

Bạn cần phải sử dụng .get() sau để có được phần tử DOM thực tế:

var canvas = $("#cv").get(0); 

Nếu không, bạn đang nhận được đối tượng jQuery khi bạn chỉ làm $("#cv"), vì vậy phương pháp như getContext sẽ không hoạt động.

4

sử dụng get()

http://api.jquery.com/get/

khám phá doc jquery, nó rất hữu ích

+0

Tôi đã chỉ kiểm tra các thuộc tính của jquery và quên jquery trả về một tập hợp các thành phần được tạo ra. – Erxin

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