2014-09-24 69 views
-1

我动态地添加样式到名为ordernow无法添加样式动态创建的按钮正确

动态创建的按钮,根据状态字段我增加了风格,按钮

按要求

如果状态为1的类应该是

btn-success 

如果第E的身份是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>'); 

} 

但我观察到,不管最后的风格是目前正被添加到所有的按钮

http://jsfiddle.net/nvx4tkLt/5/

有人可以请帮忙怎么解决这个问题

+0

您可以简化小提琴只是相关的部分?甚至很难甚至弄清楚代码被调用的地方或者它应该做什么。 – 2014-09-24 15:13:17

+0

为了模拟来自服务器的响应,我使用了这些数组,并且此状态检查显示在showRestaurantDetailsByLocation函数下。 – Pawan 2014-09-24 15:15:47

+1

你仍然可以简化它 - 你有很多东西都不相关。同样使用“整洁”按钮,你的问题实际上变得明显。你在循环外部有'divhtml.children(“li”)。append($ ordernow);''$ ordernow'在循环内部构建。所以你只添加在循环的最后一次迭代中构建的'$ ordernow'。 – 2014-09-24 15:19:03

回答

1

正如我在评论中所说的那样,您在循环之外添加了​​,所以您只添加在循环的最后一次迭代中构建的按钮。为了解决这个问题,尝试:

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 
} 

参见:http://jsfiddle.net/nvx4tkLt/4/

+0

非常好,正是我所需要的,并且对于凌乱的代码感到抱歉,我并不知道直到现在整理好的功能。再次感谢您的先生。 – Pawan 2014-09-24 15:23:58