jQuery - 对返回的估值执行多个操作

时间:2013-04-01 18:44:18

标签: jquery

从主题 - "jQuery - setting the selected value of a select control via its text description" - 我用它来选择我的价值

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

但是,如果我也想用黄色打扮并更改文字,那该怎么办呢。

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

ADD YELLOW:

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

添加文字:

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

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

2 个答案:

答案 0 :(得分: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这样的布尔元素属性。

答案 1 :(得分:1)

你只是链接那里:

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