1

我正在使用 jQuery 处理 SharePoint,每次我将 prepend() 函数与 each() 函数结合使用以便在列表中的每个单元格之前显示图像时,我都会得到其中的几个图像。

更具体地说,这些图像的数量与列表中的项目数量相匹配。我敢打赌这是发生了什么的线索,但我不是 jQuery 专家

这是一段代码:

$(item).each(function(i, e) {
  $(e).prepend(image); 
});

顺便说一句,图像image是一个包含图像的 html 代码的变量。Item这是:

var item = #MSO_ContentTable td.ms-vb2>div:has(>div);

这个地方太棒了!

4

2 回答 2

0

我怀疑问题可能出在item. 根据我的经验,SharePoint 生成的 HTML 包含许多“空”元素,这些元素虽然在呈现的页面中不可见,但被 jQuery 查询拾取。

在制作 jQuery 选择器时,我发现 Mozilla Firefox 和 Firebug 是必不可少的。这是我的建议:

  1. 获取FirefoxFirebug(如果您还没有)
  2. 在 FF 中打开您的 SharePoint 页面并按 f12 激活 FB
  3. 在 FB 中,切换到控制台选项卡(您可能需要先从控制台下拉菜单中选择“启用”)
  4. 在控制台底部的行(用 表示>>>)中,输入您的 jQuery: jQuery("#MSO_ContentTable td.ms-vb2>div:has(>div)")
  5. 点击返回;控制台的输出窗口应该显示选择器表示的所有匹配项。将鼠标悬停在每一个上,以在页面中突出显示它。

通过使用这种技术,您可以查看您的查询是否拉回了太多、太少或根本没有正确的结果。

请务必在 FB 控制台窗口中使用jQuery,而不是$在 FB 控制台窗口中使用,因为 FB 也使用美元别名。

祝你好运!

于 2010-08-03T19:31:41.027 回答
0

你可以这样做:

$(item).each(function(i, e) {
  $(e).prepend(image[i]); 
});

但我不清楚是什么image,如果它是一组元素,它将预先设置为item选择器找到的每个匹配项。如果是 jQuery 元素或数组,上面的方法可以工作,如果是别的,请贴出来。

上面的示例采用匹配image条目并将其添加到item同一索引的当前匹配项之前,这是我可以从被问到的问题中收集到的最好的结果。

于 2010-08-03T16:42:50.030 回答