我在使用jQuery時遇到了一些麻煩。我試圖做一個AJAX請求,並改變點擊元素,如果該請求給出正確的響應。在jQuery中使用replaceWith()時出現奇怪的行爲
我的jQuery:
$(document).on('click', '.add-to-check', function (e) {
e.preventDefault();
var url = $(this).attr('href');
$.ajax({
url: url,
type: "GET",
success: function (response) {
var result = jQuery.parseJSON(response);
if (result.status == 'success') {
$(e.target).replaceWith('<i class="fa fa-check"></i>');
} else if (result.status == 'failure') {
// failure
}
},
});
return false;
});
我的HTML:
<a class="btn btn-sm btn-primary pull-left add-to-check" href="/tasks/check/1235"><i class="fa fa-close"></i></a>
這不能正常工作,但是。當我點擊按鈕時,大多數時候按鈕會消失,並顯示一個檢查圖標。這是它應該工作的方式。
然而,有時候:複選標記出現,但它仍然是一個按鈕。我無法弄清楚爲什麼會這樣。
@RienNeVaPlu͢s用$(this)替換它是我最初的想法。但是,當我這樣做時,腳本不起作用。我認爲這是因爲我使用$(文檔)。有人可以支持我嗎? – Peter 2015-02-24 16:03:26
不,它不會工作,因爲'this'的上下文已經改變。 – Michelangelo 2015-02-24 16:04:31
只是瘋狂的猜測,但是當你點擊元素 - 是不是目標實際元素?因此,當您替換它時,鏈接元素將保留,因爲腳本替換了原始目標的元素。 – koressak 2015-02-24 16:10:17