Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如果元素具有类,如何更改元素的值?_Jquery - Fatal编程技术网

Jquery 如果元素具有类,如何更改元素的值?

Jquery 如果元素具有类,如何更改元素的值?,jquery,Jquery,如果新用户: 已注册为艺术家 已向艺术家团队注册 已向消费者注册 最优雅的解决方案是什么 提前谢谢 <form id="new_user" class="artist-registration"> <input type="hidden" value="artist" name="user[profile_attributes][role]" id="user_profile_attributes_role"> </form> 您的问题不是很清楚,但我想

如果新用户:

  • 已注册为艺术家
  • 已向艺术家团队注册
  • 已向消费者注册
最优雅的解决方案是什么

提前谢谢

<form id="new_user" class="artist-registration">
<input type="hidden" value="artist" name="user[profile_attributes][role]" id="user_profile_attributes_role">
</form>

您的问题不是很清楚,但我想您是说,如果表单元素具有类“Artister registration”,那么将输入元素的值设置为“Artister”,依此类推其他类名

如果您知道,
#新用户
将只拥有一个类,则类似于以下内容:

var val = ""; // default blank value will apply if no classes match

switch ($("#new_user").attr("class")) {
   case "artist-registration":
      val = "artist";
      break;
   case "team-registration":
      val = "artist_team";
      break;
   case "consumer-registration":
      val = "consumer";
      break;
}
$('#user_profile_attributes_role').val(val);
如果
#新用户
可能有多个类,那么可能:

var val = "",
    $nu = $("#new_user");

switch (true) {
   case $nu.hasClass("artist-registration"):
      val = "artist";
      break;
   case $nu.hasClass("team-registration"):
      val = "artist_team";
      break;
   case $nu.hasClass("consumer-registration"):
      val = "consumer";
      break;
}
$('#user_profile_attributes_role').val(val);
后者将根据首先匹配的类别设置值,即,如果表单具有所有三个类别,则“艺术家注册”将优先考虑。

使用:

第一行查找
元素
$input
严格来说是一个jQuery元素集

在下面的每一行中,
filter()
返回一个简化的元素集,其元素与给定的CSS选择器匹配。在命名类与
输入
元素的实际类不匹配的两种情况下,此集合为空


然后,
val()
函数更新给定集合中每个元素的值。对于两个不匹配的调用,集合是空的,因此调用是不可操作的。

如果这是判断答案是否成功的标准,请定义“优雅”。更改类的规则是什么?从“团队注册”更改为“艺术家团队”本身似乎并不那么“优雅”。如果表单具有类,那么更改值?你不喜欢这个班的名字吗?我没有写艺术家团队注册,而是使用了团队注册:)谢谢你的评论,这看起来很优雅,只有四行(所有的条件和循环都隐藏在jQuery的内部),但我认为想法是在表单中设置输入元素的值。是的,这很好,但是我要更改#new#u用户表单中的输入元素,正如nnnn正确提到的那样。谢谢这正是我需要的,但它对我不起作用。也许是因为新用户的类也添加了带有点击功能的jquery?我的代码放在哪里很重要。我不知道你说的点击功能是什么意思。也许你可以在上设置一个演示,这样我们就可以看到你想做什么了?例如,下面是我的代码工作的演示:
var $input = $('#new_user');
$input.filter('.artist-registration').val('artist');
$input.filter('.team-registration').val('artist_team');
$input.filter('.consumer-registration').val('consumer');