Javascript SharePoint 2013,对列表排序后,在模式对话框中打开另一个SharePoint列表项失败

Javascript SharePoint 2013,对列表排序后,在模式对话框中打开另一个SharePoint列表项失败,javascript,jquery,sharepoint,modal-dialog,Javascript,Jquery,Sharepoint,Modal Dialog,抱歉发了这么长的邮件。这让我很痛苦。我的脚本在SharePoint 2010 online中运行得非常好,基本上我有一个带有超链接列的源自定义列表和一个带有标题和我的名字的目标列表 源列表A与以下两列类似 标题测试链接 链接1 B链接2 C链接3 每个链接都链接到目标列表中的实际列表项,因此,例如,链接1是/sites/2013DevSite/Lists/destination%20List/EditForm.aspx?ID=1 因此,基本上我希望在任何时候单击指向另一个列表项的链接,以在模式对

抱歉发了这么长的邮件。这让我很痛苦。我的脚本在SharePoint 2010 online中运行得非常好,基本上我有一个带有超链接列的源自定义列表和一个带有标题和我的名字的目标列表

源列表A与以下两列类似

标题测试链接

链接1

B链接2

C链接3

每个链接都链接到目标列表中的实际列表项,因此,例如,链接1是/sites/2013DevSite/Lists/destination%20List/EditForm.aspx?ID=1

因此,基本上我希望在任何时候单击指向另一个列表项的链接,以在模式对话框中打开,并且下面的脚本在SharePoint 2010 online中运行良好

<script language="javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" type="text/javascript"></script>
<script language ="javascript" type="text/javascript">   

jQuery(document).ready(function() {
jQuery('a[href*="EditForm.aspx"]').each(function (i, e) {
// Store the A tag's current href in a variable
var currentHref = jQuery(e).attr('href');
jQuery(e).attr({
'href': 'javascript:void(0);', 
// Use the stored href as argument for the ShowInModal functions parameter.
'onclick': 'ShowInModal("' + currentHref + '");'

});
});

}); 

function ShowInModal(href) {
SP.UI.ModalDialog.showModalDialog({title: "Edit Item", url: href});    
};
</script>
它所做的只是找到特定值Editform.aspx的href标记,而pop模式在SP 2010 online中工作。因此,网站页面的设计是这样的:有一个内容编辑器web部件,其中引用了此javascript文件,sharepoint列表就在其下方,在SP 2010的模式窗口中打开时,它工作得非常完美

从迁移到2013年,这就是实际发生的情况

一,。当你进入网站页面时,模式会起作用

二,。如果您过滤或排序,例如源列表中的标题或测试链接列允许您选择值A,则脚本根本不会启动,如果我将鼠标悬停在超链接上,则会显示who超链接,并且不会在模式弹出窗口中打开超链接。-这很重要,因为我希望能够对特定项目进行排序

请有人告诉我我做错了什么,谢谢你的帮助


我再次尝试使用Jquery从另一个列表中打开sharepoint列表项,是否在筛选列表后检查JavaScript是否仍在页面中

我不使用Sharepoint 2013,但可能过滤后的内容是由AJAX加载的,这样链接就不会自动绑定。在这种情况下,您的代码应该是不同的,这是我建议您无论如何编写代码的方式:

jQuery(document).ready(function() {
  jQuery('body').on('a[href*="EditForm.aspx"]', 'click', function(event) {
    event.preventDefault();
    alert("OK");
    ShowInModal($(this).attr("href"))
  });
});

这样,页面中的任何新链接都会被jQuery自动绑定。

Aym,所以我使用您提到的原理尝试了这个简单的代码

jQuery(document).ready(function() { // When jQuery is ready, continue
 jQuery('a[href*="EditForm.aspx"]').click(function (event) {
  alert("Hello");
  event.preventDefault();
 });
});

第一次完美我收到了消息和事件。preventdefault工作正常,不会转到目标页面,但一旦我对sharepoint列表进行排序,所有赌注都将取消。伙计,这太令人沮丧了。抱歉,我只是在发泄一下。

谢谢,嗯,我试着看看这是如何工作的,例如在事件之后。preventdefault;我添加了一个alertHello World;甚至到不了那个地方。可能我遗漏了一些东西,但基本上任何代码都不会在jQuery'body'行之后执行,我做了Aym,甚至不会通过第一行jQuery'body'。你的代码是错误的。你需要用我的!!让我更新以前的代码,将其嵌入到ready中