标记档案: jQuery

XSLT 和 jQuery 样本

我做了很多的 XSLT 和 jQuery 和思想会分享他人在将来可能会发现有用的几个片段.

示例 1: 发出简单 JavaScript / 在 XSLT jQuery:

<xsl:模板匹配 ="的东西" xml:空间 ="维护">

  <!– 出查询友好筛选器隐藏字段保留为空 –>
  <脚本类型 ="文本/javascript">
    $(文档).准备好了(功能(){
      $(""#QueryFriendlyFilters).瓦尔("空");
    });
  </脚本>

</xsl:模板>

这位会发出一些等待完成加载页面的 JavaScript (由于 $(文档).准备好了(…)) 和则集命名隐藏的字段的值为 QueryFriendlyFilters,"空"的文本值.

示例 2: 使用 <xsl:如果> 要检查"大于",  "小于", 等.

<xsl:模板匹配 ="的东西" xml:空间 ="维护">

  <div id ="fdcAllFilters">
 
    <xsl:如果 test="@Count>0">
      <跨类 ="fdcFilterLabel">当前的筛选器:</大跨度>
    </xsl:如果>

    <!– 在这里发生了更多的东西. –>

</xsl:模板>

在上面的代码段检查名为"计数"的"东西"元素的属性是否大于零。  这背后的 XML 就像:”

<东西计数 ="5"/>

示例 3: 循环访问所有元素, 排布 jQuery 的调用.

<!– 遍历的所有筛选器,并显示正确  链接. –>
<xsl:为每个选择 ="UserFilter">

  <一类 ="FilterHref" href ="javascript:mySubmitPage('' RemoveUserFilter,'{@ ID}’)">[X]</一>

  <跨类 ="fdcFilterLabel"><xsl:值的 select="@FilterValue"/></大跨度>

  <脚本类型 ="文本/javascript">

    $(文档).准备好了(功能(){
        <xsl:文本><![CDATA[$(""#QueryFriendlyFilters).瓦尔( ($(""#QueryFriendlyFilters).瓦尔() + " ]]></xsl:文本>\"<xsl:值的 select="@FilterValue"/>\"<xsl:文本><![CDATA["));]]></xsl:文本>
    });

  </脚本>

</xsl:为每个>

上面的代码段是最复杂的可能还有更容易的方法做这件事.

这背后的 XML 大致如下:

<UserFilter ID ="123"FilterValue ="xyzzy"/>

此代码段循环访问 <UserFilter> 节点。 

它首先发出锚标签,单击时调用已经在页面上的 JavaScript 函数, "mySubmitPage",并传递的属性的值 <UserFilter> 名为"ID"的节点。 

然后,它会发出一些等待加载页面的 jQuery。  那 jQuery 更新隐藏的字段命名为"QueryFriendlyFilters"中添加 FilterValue 属性的值。  请注意所有疯狂 <xsl:文本> 和 <![CDATA[ … ]]> 东西.

就是这样, 希望它可以帮助!

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Lists.asmx, GetListItems 和文件夹

我做了一些调查有人今天周围作为 SharePoint 的一部分提供的 list.asmx web 服务 2010 (及更早版本).  她之所以能够获得在根文件夹的列表项 (包括子文件夹的名称), 但不能在子文件夹中的项目。  我做了一些环顾四周在互联网络上,这是一个令人惊讶的常见的问题。  然而, 没能得到很好简单问题的答案, "如果我知道该文件夹, 如何获取文件夹中的项目?”  要诚实, 因为我想我自己对这一出图了一会儿我并没有试图在所有的努力 微笑.

进行此设置, 我创建了名为"博客情境"站点和自定义列表名称为"自定义列表的子文件夹"。  然后创建文件夹名:

  • 一年 2005
  • 一年 2006
  • 一年 2007

我添加的文件夹"2006 年"几个项目。  这是它看起来像:

image

我的朋友并不是编写 C# 代码,但宁愿使用 Java, 所以 SOAP 信封是她的真正需要。  达到目标,, 写了有点 jQuery,然后用于小提琴手获得实际的 HTTP 会话.

这里是有关 jQuery (我复制代码下下面如果要复制/粘贴):

image

他们第一个关键是要包括两个 <queryOptions> 和 <QueryOptions> 节点。  第二个关键是, <文件夹> 节点是一个 URL,客户端可以访问.

可能有其他方法来获得这, 但这工作对我来说,使用 jQuery 时.

这里是上述的 SOAP 信封:

<soapenv:信封 xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:正文>
    <GetListItems xmlns =’
http://schemas.microsoft.com/sharepoint/soap/’>
      <listName>自定义列表的子文件夹</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef 名称 =' 标题’ />
          <FieldRef 名称 ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <文件夹>
http://demoserver1/博客 子文件夹/2006 年年方案/列表/自定义列表</文件夹>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:正文>
</soapenv:信封>

很多例子和讨论围绕这让我相信我所需要的是 <QueryOptions> 并指定文件夹名称。  对我来说, 我需要这两包内 <queryOptions> 也可以指定完全限定的 URL <文件夹> 节点.

这里是 jQuery AJAX 安装程序:

$(文档).准备好了(功能() {
       var soapEnv =
           "<soapenv:信封 xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:正文> \
                    <GetListItems xmlns =’http://schemas.microsoft.com/sharepoint/soap/’> \
                       <listName>自定义列表的子文件夹</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef 名称 =' 标题’ /> \
                              <FieldRef 名称 ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <文件夹>http://demoserver1/Blogging 子文件夹/2006 年年方案/列表/自定义列表</文件夹> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:正文> \
           </soapenv:信封>";

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

无止境地嵌套 <div> 标记和 jQuery

这似乎是一个古怪的话题, 我不确定这的确值得有关的博客, 但是,从未停止过我, 所以在这里我们去 微笑

我正在那里我揪一些数据从搜索一个项目, 打包成一条 XML 消息,然后该 XML 是最终转换为 XSLT 通过 HTML。  有很多的 jQuery 涉及, 其中一位实现一些制表符的功能。  当您单击某个选项卡上 (真的, 一 <div>), jQuery 调用.hide() 和.show() 对各种 div (初始页面加载下载的所有内容,所以在这种情况下有没有回发).

一群小时前, 选项卡切换逻辑开始运行不稳定,它不会显示我的选项卡中的一个。  我最终跟踪它的事实,ie 浏览器 (至少) 原以为, <div> 远嵌套标签, 远远超过预期。开发商工具栏将显示:

-<div id ="Tab1Content">
  -<div>
    -<div>
      -<div id ="Tab2Content">
        -<div>
           …………………………
                   </div>  <— — 最后展示它关闭一路了这里!

所以, 如果我做了 $("#"Tab1Content).隐藏(), 我还会隐藏前台,我可能永远不会告诉前台是否我还没显示标签页 1。  我复制并粘贴代码到 visual studio 和它很好地显示所有 div 的衬砌起来的, 就像他们应该做的事情, 看起来像这:

-<div id ="Tab1Content">
  +<div>
  +<div>
-<div id ="Tab2Content">
  +<div>
  +<div>

我的头靠在墙上打了一会儿,并注意到在实际的 HTML 代码产生大量的空 <div> 标签, 像:

<正文>

  <div id ="Tab1Content">

    <div id ="第一行"/>
    <div id ="行 2"/>

  </div>

  <div id ="Tab2Content">

    <div id ="第一行"/>
    <div id ="行 2"/>

  </div>

</正文>

(以上是过于简单化的 waaaaaaaaaaaay。  空的 div 标签都是完全有效. 一些我 <div> 标记是内容的完整, 但更多的不是。  我认识到,那我 <xsl:为每个> 指令发出短型 div 标签时 xsl:对于每个才 ' 找到的任何数据。  被迫输出的 HTML 注释, 如图所示:

image

 

毕竟这样做, 所有 div 的很好地都排队和我选项卡切换开始工作.

如往常一样, 我希望这将有助于在必要时有人.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

然而更多的 jQuery–调整大小图像示例

我继承旧客户端供应商的 web 部件,它有一个图像的大小问题。  图像应该是 60×50 但由于某种奇怪的原因, 原始的供应商将他们被迫 42×42, 因此,他们看挤压:

 

良好的形象

坏的图像

这里是标记 (某种程度上简化):

<表类 =' 扩展 outlook'>
  <thead>
    <tr>
      <th  宽度 = 100′>3 (星期二)</th>
    </tr>
  </thead>

  <tbody>
    <tr 类 = '预测'>
      <td 宽度 = 100′>
        <ul>
          <李类 = '高'>高: 72&二甘醇;F</李>
          <李类 = '低'>低: 44&二甘醇;F</李>
          <李类 = '条件'>阳光灿烂
            <img src =’
http://deskwx.weatherbug.com/images/Forecast/icons/localized/60×50/en/trans/cond007.png’ 宽度 = 42年’ 高度 = 42年’ alt =” />
          </李>
        </ul>
      </运输署>
    </tr>

  </tbody>

</表>

您会注意到即使 图像本身的路径 显示正确的维度 (60×50) 原始供应商强迫它在 42×42.  为什么?  疯了.

不管怎么说, 我想要快速而方便地解决这个问题,我转向 jQuery。  诀窍就是要找到相应的所有 <img> 标记。  我不想与任何其他 img 标记施肥 (其中有很多).  JQuery 的这位是个把戏:

<脚本类型 ="文本/javascript" src ="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></脚本>

<脚本类型 ="文本/javascript">
     $(文档).准备好了(功能 () {

         $(' li.condition > img').每个(功能 (索引, 项目)
           
{
             $(项目).css("宽度", ""60); 
             $(项目).css("高度", ""50);
            });
     }); // 在加载文档
</脚本>

这位的代码查找集合 <李> 谁的班是"条件"的标签和 <img> 儿童。  然后,它循环访问所有这一切。  迷人.

我大概可以提高 it 效率, 但我永远不会是那种解决 π 的 unix 家伙 自 18 使用 sed 和 awk 的位数精度和我不是那种如果 jQuery 家伙要么 微笑.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

小提示: JQuery 添加 MOSS 发布网页

提高使用 jQuery 的 MOSS publising 页面时, 我打了以下的绊脚石:

中的服务器错误 ' /’ 应用程序.


分析器错误

说明: 在此请求提供服务所需资源的分析过程中出现的错误. 请查看下面的特定分析错误的详细信息,并适当地修改您的源代码文件.

分析器错误消息: 内容控件只允许直接在内容页中包含的内容控件.

源错误:

 
Line 10: 
Line 11: 
Line 12: <script 
Line 13:     type="text/javascript" 
Line 14:     src="/jQuery/jquery-1.4.min.js"> 

源文件: /_catalogs/masterpage/KCC_FacultyMember.aspx    线: 12


版本信息: Microsoft.NET Framework 版本:2.0.50727.4927; ASP.NET 版本:2.0.50727.4927

它是容易解决 (我的同事 h/t, 乌代 Ethirajulu).  请确保"PlaceHolderAdditionalPageHead"内生活的 jQuery 的代码所示:

<asp:内容 ContentPlaceholderID ="PlaceHolderAdditionalPageHead" runat ="服务器">

<脚本

    类型 ="文本/javascript"

    "src="/jQuery/jquery-1.4.min.js>

</脚本>

<脚本类型 ="文本/javascript">

  $(文档).准备好了(功能() {

   // 这里是辉煌 jQuery 的东西.

   });

</脚本>

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin