当使用jQuery的“ .nextAll()”时,我如何使“ $(this)”等于当前元素?

时间:2019-05-28 18:35:14

标签: jquery

im尝试获取一个元素,然后使每个元素都将 #taskid 的占位符属性设为当前值-1

这是我目前正在使用的工具:

$(this).nextAll('div').find('#taskid').attr('placeholder', ((parseInt($(this)
    .find('#taskid').attr('placeholder')) - 1).toString()))

html:

<div id="i0HYh" class="task" select="yes" style="background-color: rgb(240, 239, 255);">
  <input type="text" name="taskid" placeholder="1" readonly="" id="taskid">
  <input type="text" name="email1" placeholder="sdf" readonly="">
  <input type="text" name="taskproxy" id="esfes" placeholder="N/A" readonly="">
  <div id="headlessbox">
    <p>t</p>
  </div>
  <input type="text" name="status" placeholder="Idle" readonly="">
</div>

上面的jquery行有效,只是将占位符值更改为第一个元素值-1

例如,如果第一个元素的值为1,则其余元素为0

现在的占位符示例(在运行上述代码之前): 1个 2 3 4 5 6

现在的占位符示例(在运行以上代码之后): 1个 0 0 0 0 0

我想要什么(在运行上述代码之前): 1个 2 3 4 5 6

我想要什么(运行上面的代码后): 1个 1个 2 3 4 5

(对不起,如果这没有意义,我会尽力解释:()

2 个答案:

答案 0 :(得分:0)

如果我了解您要尝试执行的操作,则此代码应该可以执行您想要的操作:

var pl = parseInt($("input[name='taskid']").first().attr('placeholder'));
$("input[name='taskid']").each(function() {
    $(this).attr('placeholder', pl--);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="i0HYh" class="task" select="yes" style="background-color: rgb(240, 239, 255);">
  <input type="text" name="taskid" placeholder="1" readonly="" id="taskid">
</div>

<div id="i0HYh" class="task" select="yes" style="background-color: rgb(240, 239, 255);">
  <input type="text" name="taskid" placeholder="1" readonly="" id="taskid">
</div>

在此示例中,我清除了无用的输入。

因此,它将遍历所有输入并将其设置为#taskId占位符值-1的占位符值。

答案 1 :(得分:0)

TcpStream

为了提高可读性:

$(this).nextAll('div').each(function() {
    // $(this) refers to each div in the array collected by nextAll()
    return $(this).find('#taskid').attr('placeholder', ((parseInt($(this)
        .find('#taskid').attr('placeholder')) - 1).toString()));
});