2014-09-24 65 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