我正在进行一个简单的AJAX调用,它会在有人点击锚点后触发.在AJAX成功之后,我想在触发AJAX的锚点添加一个类.
虽然脚本工作正常,并且success函数返回所有正确的数据,但当我尝试addClass()时它不起作用.我使用了hide()方法来查看jQuery是否正确运行,它也不起作用.控制台不会打印任何错误.
为了调试我使用了一个警报,它的工作原理!警报如何正常工作,并且addClass()和hide()都没有?
<a href="#" class="refreshor" value="20">1</a>
<a href="#" class="refreshor" value="40">2</a>
jQuery(document).ready(function($) {
$('.refreshor').on('click',function(e){
e.preventDefault();
var search = $('#searchin').val();
var page = $(this).text();
var that = this;
$.ajax({
type: "POST",
url: "components/com_tagger/scripts/ajaxSearch.PHP",
data: {
"search": search,
"page": page
},
success:function(response) {
$('.ajaxSearchResults').html(response);
$(that).addClass('preventer'); //this doesnt work
$(that).hide(); //this doesnt work
var test = $(that).text();
alert(test); //this works!
}
});
});
});
解决方法:
在成功回调中,您将替换.ajaxSearchResults的内容
$('.ajaxSearchResults').html(response);
那不是指这个容器内的那些.
您需要使用委托,这将允许您绑定尚未在DOM中的元素上的事件
$('.ajaxSearchResults').on('click', '.refreshor',function(e){
e.preventDefault();
var search = $('#searchin').val();
var page = $(this).text();
var thisValue = $(this).attr('value'); // save the current value of the `a` clicked
$.ajax({
type: "POST",
url: "components/com_tagger/scripts/ajaxSearch.PHP",
data: {
"search": search,
"page": page
},
success:function(response) {
$('.ajaxSearchResults').html(response);
var that = $('.ajaxSearchResults').find('.refreshor[value="'+thisValue+'"]');
// look for the `a` that have the saved value.
that.addClass('preventer');
that.hide();
var test = that.text();
alert(test);
}
});
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。