0

从主题 - “jQuery - 通过其文本描述设置选择控件的选定值” - 我正在使用它来选择我的值

$("#PersonList option").filter(function() {
  return $(this).val() == <?php $PHPUser ?>;
}).attr('selected', true);

但是,如果我也想用黄色设置它的样式并更改文本怎么办。

我可以根据需要重复..但这似乎过度编码......

添加黄色:

$("#PersonList option").filter(function() {
  return $(this).val() == <?php $PHPUser ?>;
}).addClass(UserAccent);

添加文字:

$("#PersonList option").filter(function() {
  return $(this).val() == <?php $PHPUser ?>;
}).innerText('Myself: ' + $PHPUser);

我将如何在一次评估中做到这一点?

4

2 回答 2

2

遇到这个问题时,通常的做法是将过滤后的集合存储在一个变量中:

var elements = $("#PersonList option").filter(function() {
  return $(this).val() == <?php $PHPUser ?>;
});
elements.prop('selected', true);
elements.addClass(UserAccent);
elements.text('Myself: ' + $PHPUser);

这很好,并且不需要任何特定的 JQuery 知识。

但是 jQuery 启用了链接,即大多数函数返回接收者,以便您在其上调用另一个函数,这使您可以这样做:

$("#PersonList option").filter(function() {
  return $(this).val() == <?php $PHPUser ?>;
}).prop('selected', true)
  .addClass(UserAccent)
  .text('Myself: ' + $PHPUser);

正如 adeneo 所注意到的,您应该使用prop设置一个布尔元素属性,例如selected.

于 2013-04-01T18:45:50.260 回答
1

您只需将其链接在那里:

$("#PersonList option").filter(function() {
   return this.value == "<?php echo $PHPUser; ?>";
}).prop('selected', true)
  .addClass('someClass')
  .text('Myself: <?php echo $PHPUser; ?>');
于 2013-04-01T18:46:12.797 回答