2011-09-12 59 views
6

Tôi có một số html.Thẻ gắn thẻ HTML với thẻ nghiêng

<a href="#"> 
    <i class="some-bg" /> 
    Some Text 
</a> 

Và một số Javascript.

$("a").bind("touchstart", function (e) { 
    e.preventDefault(); 

    console.log("Tag: " + e.target); 
    console.log("Tag Name: " + e.target.tagName); 
}); 

Câu trả lời là.

Tag: [object HTMLElement] 
Tag Name: I 

Tại sao? Không nên nó được neo?

CẬP NHẬT

$("a, a *").bind(function() { 
    e.stopPropagation(); 

    // other stuff 
}); 

này sẽ làm các trick?

+0

Tại sao không thử '' thay thế? – jrummell

+3

Hãy nhớ rằng 'i',' b' và 'u' không có nghĩa gì nhiều về ngữ nghĩa của bạn. [Có nhiều cách tốt hơn] (http://www.impressivewebs.com/bold-italic-html5/) ... –

Trả lời

4

Tại sao?

Vì bạn đã chạm vào số <i> (và sau đó sự kiện đã phát ra tối đa <a>).

Không được neo?

No. Sử dụng currentTarget nếu bạn muốn phần tử mà sự kiện bị ràng buộc chứ không phải sự kiện thực sự kích hoạt sự kiện.

+0

nó sẽ xảy ra như tôi chạm vào "i" và sự kiện bị bắn hai lần? – Neutralizer

+0

hey tôi vừa mới nhận ra vấn đề. Vấn đề là bởi vì "i" là indide "a" và cũng hầu hết các không gian nút là bởi hình nền của "i" vì vậy khi tôi cố gắng chạm vào nút và nếu ngón tay của tôi là chỉ trên hình ảnh và không phải là văn bản , người xử lý không bị sa thải. Làm thế nào tôi có thể khắc phục điều này? – Neutralizer