Javascript 需要jquery中的帮助吗

Javascript 需要jquery中的帮助吗,javascript,jquery,html,Javascript,Jquery,Html,我有以下代码: <div id="comments" class="clearfix"> <div class="conversation box_round_s box_shadow clearfix mtm"> <div class="conversation box_round_s box_shadow clearfix mtm"> <input class="conv_tracker" type="hidden" value="4

我有以下代码:

<div id="comments" class="clearfix">
  <div class="conversation box_round_s box_shadow clearfix mtm">
  <div class="conversation box_round_s box_shadow clearfix mtm">
    <input class="conv_tracker" type="hidden" value="4695f1db2d">
    <div class="conv-header">2</div>
    <div class="comment pts plm prs pbs">
    <div class="comment plxl pts plm prs pbs">
    <div class="replybox pvs clearfix">
      <textarea class="comment_txt_r fses fft"></textarea>
    </div>
  </div>
  <div class="conversation box_round_s box_shadow clearfix mtm">
  <div class="conversation box_round_s box_shadow clearfix mtm">
</div>
谁能告诉我我做错了什么吗?

使用$'conv\u tracker'.val。ID在页面中必须是唯一的,因此没有理由通过最近的和子项来上下遍历DOM,然后按ID选择。只需按ID选择即可

很可能,如果当前代码不起作用,则ID在页面中不是唯一的,并且它将被剥离到后面的元素中,并使用重复的ID阻止代码选择该元素。如果是这种情况,则需要为重复的元素使用类或其他属性

作为一个不相关的建议,请尝试使用数据属性并将值直接附加到要将事件绑定到的元素,而不是将随机的、未耦合的、语义上无意义的元素转储到DOM中

您的文本区域将获得一个data conv tracker属性:

<textarea class="comment_txt_r fses fft" data-conv-tracker="4695f1db2d" />
换线

var relid = $(this).closest('.conversation').children('input#conv_tracker').val();


您在错误的上下文中使用了$this,它是$'.comment_txt_r',在代码中

只需直接在jQuery中处理输入,如$'conv_tracker'.val。因此,您的代码如下所示:

$(".comment_txt_r").keydown(function(e){
  var code = (e.keyCode ? e.keyCode : e.which);
  if(code == 13) {      
    var ctext = $(this).val();
    var relid = $('#conv_tracker').val();
    alert(relid);
  }
});
HTML

替换

JavaScript


通过单独运行每个对话,您可以为jQuery提供一组较小的元素进行筛选。

在您提供的HTML中,我没有看到类注释。\u txt\r。谢谢,我已经更正了代码。text区域不是自动关闭标记:不要在你的操作中不断更改代码。这会使回答你的问题变得不可能。也纠正了,但那不是我的问题。请建议我如何访问该值。+1 ID很好,不会再次使标记类型复杂化。啊哈,是的,我从问题中复制并粘贴了它,现在已删除。请看,代码中有多个带有类注释的文本框,还有多个具有不同值的隐藏输入。所以我需要有一种方法来访问用户当前按enter键的输入值。@Phil如果这不能解决他的问题,他在发布的代码之外还有其他问题。谢谢。好的,所以我把id改成了类,但现在我也得到了未定义的错误。@meagar谢谢你的建议。我尝试了你的方法conv tracker one,但仍然出现未定义的错误。我做错了什么吗?请看,代码中有多个文本框,其中包含class comment_txt_r,还有多个隐藏的输入值不同。所以我需要有一种方法来访问用户当前按enter键的输入值。好的,那么您不能使用id,但应该使用类。id是唯一的,因此您将无法以使用它的方式访问正确的元素。@Rahul请参阅我关于数据属性的回答。你做这件事的方式既过时又丑陋。您不应该为此使用ID或类。我想您可能只需要将其更改为var relid=$this.closest'.conversation'.children'input.conv_tracker'.val;不过我同意@meagar。如果您确实可以更改html的源代码,那么您可以将该值附加到textarea本身。
var relid = $(this).closest('.conversation').children('input#conv_tracker').val();
var relid = $('#conv_tracker').val()
$(".comment_txt_r").keydown(function(e){
  var code = (e.keyCode ? e.keyCode : e.which);
  if(code == 13) {      
    var ctext = $(this).val();
    var relid = $('#conv_tracker').val();
    alert(relid);
  }
});
$('#comments .conversation').each(function(i, conversation){    
    $('.comment_txt_r', conversation).keydown(function(e){
      if((e.keyCode ? e.keyCode : e.which) == 13) {      
        var ctext = $(this).val();
        var relid = $('.conv_tracker', conversation).val();
        alert(relid);
      }
    });
    // additional per conversation code
});