【发布时间】:2016-10-16 13:49:10
【问题描述】:
我想使用 jQuery 修改动态生成的下拉列表的文本内容。这是我的例子:
下拉文本如下所示:
<select id="s1">
<option data-name="volvo" value="1">1:Volvo</option>
<option data-name="saab" value="2">2:Saab</option>
<option data-name="mercedes" value="3">3:Mercedes</option>
<option data-name="audi" value="4">4:Audi</option>
<option data-name="BMW" value="11">11:BMW</option>
</select>
jQuery:
var previous;
$('#s1').focus(function () {
// Store the current value on focus, before it changes
previous = this.value;
}).change(function() {
//Modify the SelectedOption Display only Number Value
$('#s1').find(':selected').text($('#s1').find(':selected').val());
//Restore the Previous Option : Format 'Number Value : data-name'
alert($("#s1 option[value='"+previous+"']").val());
alert($("#s1 option[value='"+previous+"']").attr('data-name'));
$("#s1 option[value='"+previous+"']").text($("#s1 option[value='"+previous+"']").val() +' '+ $("#s1 option[value='"+previous+"']").attr('data-name'));
});
我还使用了以下属性:
-
value:存储那辆车的数值 -
data-name: 存储那辆车的名称
这就是我想要的:
每当任何用户选择任何选项时,所选选项文本将被修改并删除该名称部分:例如:选择 1:沃尔沃仅变为 1。但是,如果用户选择另一个选项,则先前的选项文本将恢复为以前的格式例如:1 再次变为 1:沃尔沃。这就是为什么我使用给定的属性来恢复格式。
如果我使用alert,我已经编写了一个可以正常工作的代码。但是我想在不使用alert 的情况下这样做,然后它就不起作用了。
这是我的代码: jsfiddle 请帮忙。
【问题讨论】:
-
焦点和变化事件可能会干扰这里,resp。正在以与您预期不同的顺序发生。 (通过 UI 阻塞警报执行“保持”可以很容易地掩盖这一事实。)我会在这里只使用更改(并单击,如果激活默认可见的选项应该实现相同的事情)事件,并这样做:@ 987654322@(如果要恢复原始选项文本,则需要将大写名称存储到 data-name 开头,或者通过脚本大写 - 如果涉及像 BMW 这样的东西,这并不容易。)
标签: javascript jquery html