Jquery显示多个返回的结果?

时间:2017-03-28 07:49:27

标签: jquery each

我有一个简单的脚本,当你选择一所学校时,它建议员工是否可以重新分配。

目前,如果它返回多个结果,我会多次在屏幕上显示该消息。例如:如果有3名工作人员,我可以

Staff Member/s are available Staff Member/s are available Staff Member/s are available

当我只想要一条线时。

Staff Member/s are available

这是循环遍历每个可用员工的代码,然后调用list来过滤并显示结果。

为简单起见,我剥去了list只是为了展示它的作用。

if (staff.length >=1) {
    $.each($.unique(staff.split(',')), function(key, val) { 
        list(val);
    });
}

function list(ID) {

        if($.inArray(ID, myArray) != -1) {
            var available = true;
        } else {
            var all = true;
        }

    if (available) $("#status").prepend('<li>Staff Member/s are available</li>');
}

在列表中,如果已经显示消息,我该如何停止显示消息?

我已经尝试为此添加一个计数器,只显示staffCount === 1,但似乎无效。

任何想法?

由于

3 个答案:

答案 0 :(得分:3)

问题是因为您在每次迭代中都在调用append()。相反,您可以将逻辑更改为仅对阵列中所有项的结果执行检查。试试这个:

if (staff.length) {
  var available = false;
  $.each($.unique(staff.split(',')), function(key, val) {
    if ($.inArray(val, myArray) != -1) {
      available = true;
      return false;
    }
  });

  if (available) 
    $("#status").prepend('<li>Staff Member/s are available</li>');
}

答案 1 :(得分:0)

不能说是最好的,但这是另一种方法:每次添加时都将其删除。

...
if (available) $("#status").prepend(function() {
  $("#avail").remove();
  return '<li id="avail">Staff Member/s are available</li>
});

或者创建一个元素并替换所有HTML:(@ diavolic)

...
if (available) $("#status").prepend('<li id="avail" />').find("#avail").html('Staff Member/s are available')

答案 2 :(得分:0)

尝试替换

    if (available) $("#status").prepend('<li>Staff Member/s are available</li>');

    if (available) $("#status").html('<li>Staff Member/s are available</li>');