2016-03-22 59 views
0

請找到的jsfiddlejQuery的 - 動態改變選項的文本不工作

https://jsfiddle.net/qs008so7/

我在HTML中的選項框,我試圖設置使用jQuery的選項。 但它不工作。請找到下面的代碼。

如果我在控制檯中調用代碼,並且能夠看到預期的html正在返回。 意思是,這些更改在DOM中受到了適當的影響,但它並未反映在UI中。。你可以看到我的jfiddle。

HTML:

<select class="form-control" name="test" id="test"> 
    <option value="0">Disabled</option> 
    <option value="1">Enabled</option> 
</select> 

JS:

setGivenOption(test,"Enabled"); 
setGivenOption(test,"Disabled"); 

function setGivenOption(elementId, option) { 
    //Make all the old selections to null 
    $(elementId).each(function() { 
     $('option', this).each(function() { 
      $(this).attr('selected', null); 
     }); 
    }); 
    //set the given option 
    $(elementId).find(">option:contains('" + option + "')").attr("selected", "selected"); 
} 

感謝。

+2

作爲一個附註,你應該對你的參數名'elementId'有第二個想法。在你的代碼示例中,你不*傳遞一個id,而是一個元素本身 –

回答

1

你這裏幾乎有:嘗試等之後@ Chips_100這https://jsfiddle.net/q5886d5o/1/

更新評論

setGivenOption("test","Disabled"); 
setGivenOption("test","Enabled"); 

function setGivenOption(elementId, option) { 
    //Make all the old selections to null 
    $('#' + elementId).children('option').each(function() { 
     $(this).attr('selected', null); 
    }); 
    //set the given option 
    $('#' + elementId).children("option:contains('" + option + "')").attr("selected", "selected"); 
} 
+0

謝謝Caramba。請參閱我最近的編輯。在你的jfiddle中,看起來它正在刷新。但看到我的jfiddle,它沒有被刷新。 DOM已正確更新,但未在瀏覽器UI中反映出來。 – JavaUser

+0

@JavaUser在你的小提琴中我沒有看到DOM正在更新 – caramba

+0

對不起。添加jquery後,事情工作正常。你可以請檢查一次。 – JavaUser

1

只需

$(elementId).find('option:contains(' + option + ')').attr('selected', true); 

這將取消選取不管它被選中,然後選擇新option

+0

是隻是看文本將在DOM中工作,但不反映在browser.Please看到我最近編輯和jfiddle – JavaUser

+0

這是因爲你的jsfiddle似乎不加載jquery,看到這一個http://jsfiddle.net/A8Gq4/187/ –

+0

如何刷新html選項元素? – JavaUser