Hy vọng ai đó có thể tư vấn. Gặp sự cố khi cố xóa một hàng sau khi một liên kết được nhấp vào.jQuery lựa chọn TR gần nhất
HTML
<table>
<tr><td>Some Data</td><td><a href="#" class="remove-row>Remove Row</a></td></tr>
<tr><td>Some Data</td><td><a href="#" class="remove-row">Remove Row</a></td></tr>
</table>
Bây giờ JS
$("a.remove-row").live('click', function(eve){
eve.preventDefault();
$.ajax({
type: 'GET',
url: '/someaction/',
dataType: 'json',
success: function(msg){
if(msg.error){
alert(msg.error);
}else{
$(this).closest('tr').remove();
alert(msg.success);
}
}
})
});
này cần được thực đơn giản buts nó không loại bỏ hàng. Chỉ cần đá nếu tôi đổi nó thành một cái gì đó như
$('.remove-row').addClass('foo');
Nó sẽ thêm foo vào tất cả các hàng trong bảng. Vì vậy, có thể hiểu tại sao nó không loại bỏ hàng gần nhất.
Bất kỳ ý tưởng nào?
Cảm ơn bạn đã nâng cao.
Nick - sửa chữa nhỏ. Trong 'success:' callback, 'this' dùng để chỉ đối tượng' xhr', không phải 'window'. http://jsfiddle.net/WzeAh/ * Điều này, tất nhiên, không liên quan gì đến giải pháp được đề xuất của bạn. * +1 – user113716
@patrick - Xin lỗi, tôi sẽ làm rõ thêm một chút trong câu trả lời, nó * cư xử * như 'cửa sổ' cho mục đích sử dụng hiện tại, ví dụ '$ (this) .find (selector)' hoạt động giống như nếu '$ (this)' là '$ (window)' hoặc '$ (document)'. –
Nick - Trừ khi tôi hiểu lầm rõ ràng của bạn, nó không có vẻ (bên trong gọi lại) như thể '$ (this)' cung cấp cho bạn hành vi tương tự như '$ (document)', vì thực hiện '.find()' '0' khớp. http://jsfiddle.net/WzeAh/1/ EDIT: '$ (cửa sổ)' cũng cho kết quả '0'. – user113716