2016-03-22 23 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