Jquery 无法正确地向动态创建的按钮添加样式

Jquery 无法正确地向动态创建的按钮添加样式,jquery,Jquery,我正在为名为“ordernow”的动态创建按钮动态添加样式 根据状态字段,我将向按钮添加样式 按要求 如果状态为1,则类应为 btn-success 如果状态为0,则类必须为 btn-mrn 我试过这种方法 for (var i = 0; i < response.length; i++) { var classstyle = ""; if(response[i].status==1) { classstyle = "success"; }

我正在为名为“ordernow”的动态创建按钮动态添加样式

根据状态字段,我将向按钮添加样式

按要求

如果状态为1,则类应为

btn-success
如果状态为0,则类必须为

btn-mrn
我试过这种方法

for (var i = 0; i < response.length; i++) {
    var classstyle  = "";

    if(response[i].status==1) {
        classstyle = "success";
    } else {
        classstyle = "mrn";
    }

    var $ordernow= $('<input/>').attr({ type: 'button',name:'btn1', class:'btn btn-'+classstyle+'', value:'Order Now', style: 'float:right'});
    divhtml.append('<li><h6>' + response[i].area + '</h6><p>' + response[i].address + '</p></li>');

}
for(变量i=0;i'+response[i].area+''+response[i].address+'

'); }
但我观察到,无论最后一种样式是什么,都会添加到所有按钮中


有谁能帮我解决这个问题吗?

正如我在一篇评论中所说,您在循环之外添加了
$ordernow
,因此您只添加了在上一次循环中构造的按钮。要修复此问题,请尝试:

for (var i = 0; i < response.length; i++) {

    var classstyle = "";
    if (response[i].status == 1) {
        classstyle = "success";
    } else {
        classstyle = "mrn";
    }

    var $ordernow = $('<input/>').attr({
        type: 'button',
        name: 'btn1',
        class: 'btn btn-' + classstyle + '',
        value: 'Order Now',
        style: 'float:right'
    });

    divhtml.append('<li><h6>' + response[i].area + '</h6><p>' + response[i].address + 
       '</p></li>').append($ordernow);  // <-- note we are appending inside the loop now
}
for(变量i=0;i'+response[i]。区域+''+response[i]。地址+

”)。追加($ordernow);//你能把你的小提琴简化为相关的部分吗?甚至很难弄清楚问题代码在哪里被调用,或者它应该做什么。为了模拟服务器的响应,我使用了这些数组,这种状态检查在showRestaurantDetailsByLocation函数下出现。你仍然可以简化它-你有很多根本不相关的东西。同时使用“TidyUp”按钮,你的问题实际上变得很明显。你有这一行
divhtml.children(“li”).append($ordernow)
在您的循环之外,但是
$ordernow
是在循环内部构造的。因此您只添加在循环的最后一次迭代中构造的
$ordernow
。非常好,正是我所需要的。对于混乱的代码,很抱歉,我到目前为止还不知道该功能整理。再次感谢先生。