【问题标题】:cannot use $(this) in $.each function inside jquery ui sortable event不能在 jquery ui 可排序事件中的 $.each 函数中使用 $(this)
【发布时间】:2012-12-03 17:16:37
【问题描述】:

我无法从其中获取 $(this)。我正在尝试在移动一行后重置表格的 css。 “#newTaskBody”是 tbody 的 id。 “.newProjectTask”是s的类。

// make the table sortable;
$("#newTaskBody").sortable({
    stop: function() {
        var counter = 0;
        $.each(".newProjectTask", function() {
            console.log(this.id);
            if(counter == 0)
            {
                $(this).removeClass("even odd");
                $(this).addClass("even");
                counter = 1;
            }
            else
            {
                $(this).removeClass("even odd");
                $(this).addClass("odd");
                counter = 0;
            }
        });
    }
});

console.log(this.id);尽管我正在测试 4 行,但返回 undefined 15 次。我尝试过“停止”、“更新”和“更改”事件。

【问题讨论】:

  • @DominicGreen 哈哈没有

标签: jquery jquery-ui jquery-ui-sortable each


【解决方案1】:

您将 string".newProjectTask" 传递给每个函数,而不是具有类 newProjectTask 的元素。每次迭代都会给出you character of the string,要查看发生了什么,请查看demo

改变

$.each(".newProjectTask", function() {

$.each($(".newProjectTask"), function() {

这就是你将如何获取每个元素的方式

Live Demo

<div id="div1" class="newProjectTask" > div1 </div>
<div id="div1"  class="newProjectTask" > div2 </div>
<div id="div1"  class="newProjectTask" > div3 </div>


​$.each($(".newProjectTask"), function() {
    alert(this.id)
})

最好使用每个版本的其他版本,即$('.newProjectTask').each(,而不是您使用的版本。​

$(".newProjectTask").each( function() {
    alert(this.id)
})

【讨论】:

  • 或者只是$('.newProjectTask').each(function(){...});
  • 谢谢@Neal,是的,neal 那是另一种方法。
  • 这就是 DOC 规定的方式
  • 干得好@Adil!我希望我能在 2 小时前发布这个;)
  • 和@Neal。我使用了正确的方法。不知道为什么这让我不以为然。再次感谢大家!!
猜你喜欢
  • 2016-01-16
  • 1970-01-01
  • 2021-01-20
  • 2013-07-20
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 2012-12-22
相关资源
最近更新 更多