2012-11-28 52 views
-1

我有一个下面的场景。实际上,在过程中渲染HTML下拉框后显示如下图所示如何从选项标记值属性中替换值

<select id="ht" class="input-box quick-jump-menu" name="ht"> 
<option selected="selected" value="">Jump straight to a below option</option> 

<option value="<span id="_SE_CP" _SE_CPt="default"><a href="Google.co.uk" alt="Lakeside" target="_self" class="">Lakeside</a></span>"> 
     Lakeside 
</option> 

<option value="<span id="_SE_CP" _SE_CPt="default"><a href="http://www.google.com" alt="Alvaston Hall" target="_self" class=""></a></span>"> 
     Alvaston 
</option> 

一些过程中的价值,它是使用一些span标签那里,我只需要URL中,如值属性下方

<select id="ht" class="input-box quick-jump-menu" name="ht"> 
<option selected="selected" value="">Jump straight to a below option</option> 

<option value="Google.co.uk"> 
     Lakeside 
</option> 

<option value="http://www.google.com"> 
     Alvaston 
</option> 

在这里,我只需要在“选项”标签的“值”属性设置的URL值。我认为这可以通过jQuery完成。

请提出一个可能的话,并帮助将非常感激

+0

您可以添加呈现下拉列表并填充选项值的代码吗? –

+0

为什么不更新你的后端,所以它会实际上生成你所需要的? –

回答

2
​var tempDiv=$('<div/>'); 
$('#ht option').each(function(){ 
    tempDiv.html($(this).val()); 
    $(this).val(​​​​​​​​​​​​​​​​​​​​​​​​​​​tempDiv.find('a').attr('href')); 
}); 

上面的代码使用一个临时的div(tempDiv)来捕获从选项值的html和提取href值。

演示(选择一个选项):http://jsfiddle.net/A7nyd/

[更新]这实际上是相同的答案@chrisgonzalez。

+0

非常感谢您的支持者 –

+0

在除IE7之外的所有浏览器中都能正常工作。你有没有针对IE7浏览器的解决方案?请帮忙。 –

+0

你试过@chrisgonzalez的回答吗?对不起,我现在无法测试IE7。顺便说一句你的jQuery版本是什么? – Christophe

2

如果你渲染选项标签这样的,你想改变它在客户端,这里有一个快速而肮脏的解决方案:

$("#ht option").each(function(){ 
    $(this).attr("value", $($(this).attr("value")).find("a").attr("href")); 
}); 
+0

您可以使用$(this).val()而不是$(this).attr(...) – Christophe

0

使用jQuery:

$('option').attr({value: 'new src'}); 
0

试试这个:

$("#ht option").each(function() 
{ 
    $(this).val($(this).val().find("a").attr("href")); 
}); 
1

首先有一个与当前HTML错误。所有价值中HTML有double quotes.

包住里面single Quotesescape the ones inside

尝试此

​$('#ht')​.after('<div id="check"></div>'); 

​$('#ht option').each(function(){ 
    if(this.value != ''){ 
     var $check = $('#check'); 
     var str = this.value; 
     $check.append(str); 
     var href = $check.find('a').attr('href'); 
     this.value = href; 
     $check.empty(); 
    }   
}); 

$('#check').remove(); 

Check Fiddle