Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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 检测嵌套列表id_Javascript_Jquery - Fatal编程技术网

Javascript 检测嵌套列表id

Javascript 检测嵌套列表id,javascript,jquery,Javascript,Jquery,当通过jquery添加新元素时,如何根据当前存在的元素在嵌套列表中定义具有特定名称或id的每个元素 例如: 问题1 答复1 答复2 添加答案 当我点击添加答案时,我想添加一个新答案,但我知道它是ans3。此外,将有多个顶级和嵌套列表,因此它需要知道与哪个问题关联 前 谢谢大家! 以下是两个javascript/jquery事实,当您为此设计解决方案时,它们将对您非常有用 事件回调绑定到在执行时触发事件的对象。 DOM元素可以有任意数量的携带数据的data-*属性。 因此,当用户单击一个问题来回答

当通过jquery添加新元素时,如何根据当前存在的元素在嵌套列表中定义具有特定名称或id的每个元素

例如:

问题1 答复1 答复2 添加答案

当我点击添加答案时,我想添加一个新答案,但我知道它是ans3。此外,将有多个顶级和嵌套列表,因此它需要知道与哪个问题关联


谢谢大家!

以下是两个javascript/jquery事实,当您为此设计解决方案时,它们将对您非常有用

事件回调绑定到在执行时触发事件的对象。 DOM元素可以有任意数量的携带数据的data-*属性。 因此,当用户单击一个问题来回答它时,单击回调可以访问该问题,如下所示。另外,当您添加一个作为答案的新元素时,您可以在其上设置一个数据问题属性,该属性指向问题的ID。如果您有这样的问题:

<li class="question" id="question1">
    <span>How to detect nested list id?</span>
    <input type="text" />
    <button class="send-answer" data-questionid="question1">Add Answer</button>
</li>
然后是像这样的javascript代码

$('.send-answer').click(function (e) {
    e.preventDefault();
    var questionId = $(this).attr('data-questionid');
    var answer = $('#' + questionId).find(input).val();
    var answerElement = $('<span>').text(answer).attr('data-questionid', questionId);
    $('#' + questionId).append(answerElement);
}

将接近于满足您的需求。还有一些其他方法可以解决此问题,例如,不向按钮添加数据questionid,您可以搜索按钮的父级,找到包含该按钮的类问题的li,并从该元素中获取id。

可以包含HTML?因此,出于这些目的,它将是一个可以添加问题的表单,以及相关的答案。在添加问题/答案时,为了设置正确的数据id或id,我如何判断到目前为止使用了哪些id?例如,如果存在ans2和ans3,则下一个应该是ans4。也许我的想法是错误的……有很多选择,你可以保留一个全局变量,并在每次添加答案时递增它。您可以每次计算答案的数量:var nextAnswerId=ans+$'span.answer'。长度此代码提供了一个基于零的索引
$('.send-answer').click(function (e) {
    e.preventDefault();
    var questionId = $(this).attr('data-questionid');
    var answer = $('#' + questionId).find(input).val();
    var answerElement = $('<span>').text(answer).attr('data-questionid', questionId);
    $('#' + questionId).append(answerElement);
}