2011-07-01 157 views
0

在下面的脚本中,“my_theme”元素是目录列表的选择列表。如何使用jQuery在选择列表中更改所选项目的文本

当它的“change”事件被触发时,jquery被调用并触发一个“get”来确定所选文件夹是否有一个style.css文件。 get返回true/false。

所有这一切工作正常。我只是试图根据get的结果来确定如何装饰选择列表中的项目。

例如,如果它为false,我想让所选项目的背景变灰,并在选项名称标签上附加一些文本。

因此,如果列表中当前选定的项目是“alpha”,并且$ .get返回false,则文本应该变成“alpha(不活动)”。

$('#my_theme').change 
(
    function() 
    { 
    //check if this folder has a style.css file 
    $.get('<?php echo get_bloginfo('template_directory') ?>/getStyle.php', {theme: myImage}, function(data){doActive(data);}); 
    } 
); 

function doActive(data){ 
if(active){ 
    //if the stylesheet is missing, append the label with " (inactive)" 
    $('#my_theme :selected').text() = $('#my_theme :selected').attr('value') + ' (inactive)'; 
    } 

该选项的“value”属性与其标签相同。 }

回答

1
function doActive(data){ 
if(active){ 
    //if the stylesheet is missing, append the label with " (inactive)" 
    $('#my_theme :selected').text($('#my_theme :selected').attr('value') + ' (inactive)'); 
    } 
+0

+1这适用于文本,但是,我认为我需要测试select而不是text()节点的“值”它是持续的,第二次选择它变成(不活动)(不活动)等。 –

+0

尝试从使用文本()更改为使用attr('value')。这似乎不起作用> if(!active) {$('#my_theme:selected')。text($('#my_theme:selected')。attr('value')+'(inactive)');} –

+0

.attr('value')works。Thanks! –

1
$('#my_theme :selected').each(function(){ 
    $(this).html($(this).html() + ' (inactive)').css('background-color','gray'); 
}); 
+0

+1感谢外国人,我可以与Liam的答案一起使用。 –

+0

我无法在此功能中触发警报。 $('#my_theme:selected')。each(function(){alert('each');}); //不会触发 –

+0

控制台中是否显示错误? (在Chrome中按住CTRL + SHIFT + I,单击控制台,刷新页面。) – AlienWebguy

相关问题