我需要一个能帮我解决这个问题的人。下面的代码与帖子和php代码配合得很好。
//Getting the id of a buyer and loop through
//sending a request to the seller
$(document).ready(function(){
$('.buyerRequest').click(function(){
var id=$(this).attr('id').replace('id_','');
$.post('SendingOffer.php',{id:id},function(data){
if(data=="true"){
$(this).html('<b>Offer Send</b>').css('background','#dce6f1');
$(this).attr("disabled","disabled");
}else if(data=="false"){
alert('You have reached the maximum number you can send todays');
}
});
});
});
我已经测试了php代码,也就是说,如果返回的数据是真输出警告框并且正在工作。例如
if(data=="true"){
alert(id);
}
但是,包含此代码
if(data=="true"){
$(this).html('<b>Offer Send</b>').css('background','#dce6f1');
$(this).attr("disabled","disabled");
}
并点击当前ID,我无法将其停用并更改其属性以提供发送。
我该如何处理这个问题
这是我的div代码
echo"<li id='td_request'><a id='id_".$fetch_num['order_id']."' class='buyerRequest' href='#".$fetch_num['order_id']."'>Send Offer</a></li>";
答案 0 :(得分:0)
$(this)在$ .post中使用可能不是一个好主意。您最好使用对html对象的引用。
例如,$(&#34; #mydiv&#34;)。html(&#39; 优惠发送&#39;)。css(&#39;背景&#39;,&#39;# dce6f1&#39);
$(this)通常引用上下文中的当前对象,在这种情况下是ajax请求,如果我没有弄错的话。例如......
$(".mydiv").each(function(){
//using $(this) here refers to the current instance of .mydiv; not the DOM or the body
});
所以,试试这个
$(document).ready(function(){
$('.buyerRequest').click(function(){
var id=$(this).attr('id').replace('id_','');
$.post('SendingOffer.php',{id:id},function(data){
if(data=="true"){
$("#**yourdivid**").html('<b>Offer Send</b>').css('background','#dce6f1');
$("#**yourdivid**").attr("disabled","disabled");
}else if(data=="false"){
alert('You have reached the maximum number you can send todays');
}
});
});
});
工作代码
<a id='id_0' class='buyerRequest' href='#0'>Send Offer</a>
<div id='responseDIV'></div>
<script>
$(document).ready(function(){
$('.buyerRequest').click(function(){
var id=$(this).attr('id').replace('id_','');
$.post('SendingOffer.php',{id:id},function(data){
if(data=="true"){
$("#responseDIV").html('<b>Offer Send</b>').css('background','#dce6f1');
$("#id_0").removeAttr("href");
}else if(data=="false"){
alert('You have reached the maximum number you can send todays');
}
});
});
});
</script>
答案 1 :(得分:0)
也许“这个”在这里含糊不清,试着改成:
var currentBtn = $(this);
var id = currentBtn.attr('id').replace('id_','');
$.post('SendingOffer.php',{id:id},function(data){
if(data=="true"){
currentBtn.html('<b>Offer Send</b>').css('background','#dce6f1');
currentBtn.attr("disabled","disabled");
}else if(data=="false"){
alert('You have reached the maximum number you can send todays');
}
});
如果禁用属性不起作用,您可以尝试:
currentBtn.prop("disabled", true);
它属于您的jQuery版本,参考:jQuery .attr("disabled", "disabled") not working in Chrome
希望这有帮助:)
答案 2 :(得分:0)
有一些问题。我假设this
是一个按钮。我创建了一个div来应用样式。问题是this
是由范围定义的。在帖子回调中,this
指的是实际的帖子对象,而不是html元素。
<script>
$(document).ready(function() {
$('.buyerRequest').click(function() {
var id=$(this).attr('id').replace('id_','');
$.post('SendingOffer.php', {"id":id}, function(data) {
console.log(data);
if (data.length>0) {
$('#my_div').html('<b>Offer Send</b>').css('background','#dce6f1');
$('#id_my_button').prop("disabled",true);
}
else {
alert('You have reached the maximum number you can send todays');
}
});
});
});
</script>
<input type='button' class='buyerRequest' id='id_my_button' value='my_button'>
<br/>
<div id='my_div'></div>