Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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
Javascript 使用数据的jqueryattrib_Javascript_Jquery_Html - Fatal编程技术网

Javascript 使用数据的jqueryattrib

Javascript 使用数据的jqueryattrib,javascript,jquery,html,Javascript,Jquery,Html,好的,我对这一部分感到困惑,但我已经遵循了指导原则,当我应用它时,仍然将数据属性而不是值放置到隐藏的输入中 下面是HTML代码 <div class="aside"> <a href="#" class="user1" data-userid="1">User Name 1</a> <a href="#" class="user2" data-userid="2">User Name 2</a> </div> <

好的,我对这一部分感到困惑,但我已经遵循了指导原则,当我应用它时,仍然将数据属性而不是值放置到隐藏的输入中

下面是HTML代码

<div class="aside">
  <a href="#" class="user1" data-userid="1">User Name 1</a>
  <a href="#" class="user2" data-userid="2">User Name 2</a>
</div>
<form action="" method="post" class="form1">
  <input type="hidden" value="">
  <textarea name="msg" id="" cols="30" rows="10"></textarea>
</form>
我想获取UserID数据的值并将其传递给隐藏的输入。
我觉得我在那里,但仍然给我错误的属性而不是值。请稍作解释。

您需要获取所单击的
A

$(".aside a").on("click", function (e) {
    e.preventDefault();
    $(this).closest('.aside').next().find("input").attr('data-userid', $(this).data('userid'));
});
演示:

还有,您想设置属性还是隐藏元素的值

$(".aside").find("a").on("click", function(e){

  e.preventDefault();
  $("input").val($(this).attr('data-userid'));
});
试试这个:

$(".aside a").on("click", function(e) {
    e.preventDefault();
    var userID = $(this).data('userid');
    $('.form1 input[type="hidden"]').val(userId);
});
使用
.data()

单击代码:

  $(".aside").find("a").on("click", function(){
 $(this).offsetParent().find(".form1 input").attr('data-userid', $('input').attr('value'));
 $("#form1 input").val($(this).data('userid'));
});

由于您不动态加载任何DOM元素,因此使用jQuery的click()函数而不是on('click')会更方便,因为它更可读且易于调试

试试这个

 $('.aside a').click(function(e){
      $('input[type=hidden]').val($(this).data('userid'));
      e.preventDefault();
 });

您好,先生,谢谢您的回答,但是我发现您的语句在隐藏输入中创建了另一个数据用户ID…@user852916我不确定您的意思。您的问题表明您正试图使用单击的a元素的data属性设置隐藏输入的值。哦,我的糟糕。。。我现在明白了。我已经检查了JSFIDLE中的源代码。。无论如何,谢谢。通过添加一个解释来改进您的答案,解释为什么这会有助于选择。答案与Rory的答案几乎相同,但是在这种情况下,单击()比单击效果更好。
  $(".aside").find("a").on("click", function(){
 $(this).offsetParent().find(".form1 input").attr('data-userid', $('input').attr('value'));
 $("#form1 input").val($(this).data('userid'));
});
$(".aside").find("a").on("click", function(){
  $(".form1 input").attr('value',$(this).attr('data-userid'));
});
$(".aside a").click(function(e) {
    e.preventDefault();
    var userID = $(this).data('userid');
    $('.form1 input[type="hidden"]').val(userId);
});
 $('.aside a').click(function(e){
      $('input[type=hidden]').val($(this).data('userid'));
      e.preventDefault();
 });