jQuery cung cấp một số đường cú pháp để giúp kiểm tra của bạn - .is()
cho phép bạn để xác nhận một yếu tố chống lại bất kỳ chọn hợp lệ khác:
var $target = event.target;
if ($target.is('div')){
alert($target.attr('class'));
}
Có một số thay đổi hơn nữa để xem xét:
.click(handler)
được chỉ định rõ ràng cho các phần tử phù hợp (mọi phần tử trong trường hợp của bạn). Điều này cho biết thêm chi phí; cũng là trình xử lý sẽ không áp dụng cho bất kỳ phần tử nào được thêm động sau khi gán nhiệm vụ xử lý. Thay vào đó, đại biểu xử lý bằng cách sử dụng on()
- refactor logic của bạn để thay vì xử lý mỗi nhấp chuột duy nhất và xác nhận nó, bạn có thể làm cho nó chỉ áp dụng cho các div ở nơi đầu tiên bằng cách thay đổi selector để
$('div')
- dựa vào
this
đó là khá nhiều công ước
Sau khi tất cả những thay đổi mã trở nên nhỏ hơn và dễ đọc hơn:
$('div').on('click', function() {
alert($(this).attr('class'));
});
Nguồn
2012-10-30 08:27:37
Lưu ý rằng bạn không cần phải tham chiếu đến 'event.target', nhưng bạn cũng có thể chỉ tham chiếu đến' this'. 'if (this.nodeName ==" DIV ") cảnh báo ($ (this) .attr (" class "));' – h2ooooooo
Vâng, bằng cách sử dụng $ ('*') làm bộ chọn, bạn sẽ sử dụng event.stopPropagation() trong chức năng gọi lại sự kiện của bạn, chỉ 2 xu của tôi. –