结合两个每个jQuery的功能为共享点

问题描述:

我有两个jQuery的功能,每个独立工作在sharepoint页面上 - 但我希望他们一起工作 - 两个'if'语句必须是合法的,以便采取行动发生例如如果找到正确的列表名称并且正确的项目在该列表中,那么隐藏该行。结合两个每个jQuery的功能为共享点

$(".ms-WPHeader").each(function(){ 

var valx = $(this).text(); 

    if(valx=="ListName"){ 
     alert("found"); 
    } 
}); 


$(".ms-vb-title").each(function(){ 

var val = $(this).text(); 

    if(val=="this item"){ 
     $(this).parents('tr:first').hide(); 

    } 
}); 

我对Jquery很陌生,对结构仍然陌生 - 我到处搜索过 - 希望你能帮忙吗?

附加代码片断显示WPHeader和VB-标题之间的关系:

<td id="MSOZoneCell_WebPartWPQ2" valign="top"> 
<table width="100%" cellspacing="0" cellpadding="0" border="0" toplevel=""> 
<tbody> 
<tr> 
<td> 
<table width="100%" cellspacing="0" cellpadding="0" border="0"> 
<tbody> 
<tr class="ms-WPHeader"> 
<td id="WebPartTitleWPQ2" style="width:100%;" title="ListName"> 
<h3 class="ms-standardheader ms-WPTitle"> 
<a href="/test/Lists/Content%20List/AllItems.aspx" tabindex="0" accesskey="W"> 
<nobr> 
<span>ListName</span> 
<span id="WebPartCaptionWPQ2"></span> 
</nobr> 
</a> 
</h3> 
</td> 
<td valign="middle" style="width:10px;padding-right:2px;"> 
</td> 
</tr> 
</tbody> 
</table> 
</td> 
</tr> 
<tr> 
<td class="" valign="top"> 
<div id="WebPartWPQ2" style="" allowexport="false" allowdelete="false" width="100%" haspers="false" webpartid="9cc3ce88-c0c6-40d4-84a6-0a14d4bfe3ed"> 
<table width="100%" cellspacing="0" cellpadding="0" border="0"> 
<script> 
<tbody> 
<tr> 
<td> 
<iframeid="FilterIframe1" width="0" height="0" filterlink="http://dab:23292/test/Content%20Library/Template%20page.aspx?Filter=1&View=%7b9CC3CE88%2dC0C6%2d40D4%2d84A6%2d0A14D4BFE3ED%7d" title="Hidden frame to filter list" style="display:none" name="FilterIframe1" src="javascript:false;"> 
<table id="{33B3ECBF-66DA-41AD-811D-F3A2D7F644F7}-{9CC3CE88-C0C6-40D4-84A6-0A14D4BFE3ED}" class="ms-listviewtable" width="100%" cellspacing="0" cellpadding="1" border="0" dir="None" o:webquerysourcehref="http://dab:23292/test/_vti_bin/owssvr.dll?CS=65001&XMLDATA=1&RowLimit=0&List={33B3ECBF-66DA-41AD-811D-F3A2D7F644F7}&View={9CC3CE88-C0C6-40D4-84A6-0A14D4BFE3ED}" summary="Content Meta List"> 
<tbody> 
<tr class="ms-viewheadertr" valign="TOP" style="display: none;"> 
<tr class=""> 
<tr class="ms-alternating"> 
<td class="ms-vb2"> 
<td class="ms-vb2"> 
<td class="ms-vb-title" height="100%"> 
<table id="7" class="ms-unselectedtitle" height="100%" cellspacing="0" surl="" uis="512" cid="0x0100363A3EFC8C275E49B25A04F063C9FADB" ctype="Item" ms="0" csrc="" hcd="" couid="" otype="0" icon="icgen_gif||" ext="" type="" perm="0x7fffffffffffffff" dref="test/Lists/Content List" url="/test/Lists/Content%20List/7_.000" ctxname="ctx1" onmouseover="OnItem(this)"> 
<tbody> 
<tr> 
<td class="ms-vb" width="100%"> 
<a target="_self" onclick="GoToLink(this);return false;" href="/test/Lists/Content%20List/DispForm.aspx?ID=7" onfocus="OnLink(this)">this item 
</a> 
</td> 
<td class=""> 
</tr> 
</tbody> 
</table> 
</td> 
+0

我们可以选择一些html标记!不知道什么控件类在 – Baz1nga 2012-02-27 13:16:39

+0

Hi Baz1nga - 这两个函数都在

+0

嗨Baz1nga - 我已经添加了如此多的标记 - 希望这可以帮助 – daveybfire 2012-02-27 14:17:41

假设MS-VB-标题是列表项的类名和MS-WPHeader是这份名单的地方里面,这里是正确的代码:

$(".ms-vb-title").each(function(){ 
    var val = $(this).text(); 
    if(val === "this item" && $(this).parents("ul").find(".ms-WPHeader").text() === "ListName") { 
     $(this).parents('tr:first').hide(); 
    } 
}); 

如果元素类ms-WPHeader在列表的外面,但数量与列表的数量相匹配,您可以使用index()

$(".ms-vb-title").each(function(){ 
    var val = $(this).text(); 
    if(val === "this item") { 
     var oParentList = $(this).parents("ul"); 
     var oHeader = $(".ms-WPHeader").eq(oParentList.index()); 
     if (oHeader.text() === "ListName") { 
      $(this).parents('tr:first').hide(); 
     } 
    } 
}); 

编辑:看到你真正的标记,这里是应该更好地工作:

$(".ms-vb-title").each(function(){ 
    var val = $.trim($(this).find("a").text()); 
    if(val === "this item" && $(".ms-WPHeader").find("td").first().attr("title") === "ListName") { 
     $(this).parents('tr:first').hide(); 
    } 
}); 

编辑:假设你得到的.ms-WPHeader等量.ms-vb-title并在相同的顺序,你可以使用index:

$(".ms-vb-title").each(function(index){ 
    var val = $.trim($(this).find("a").text()); 
    if(val === "this item" && $(".ms-WPHeader").eq(index).find("td").first().attr("title") === "ListName") { 
     $(this).parents('tr:first').hide(); 
    } 
}); 
+0

感谢影子向导 - 我已经试过代码仍然在尝试变化 - 我认为我的帖子中的类关系并不明确 - 我已转发了一些可能有所帮助的代码 - 无论如何,我认为您的代码将起作用 - 但我仍然知道足以让它工作。如果你能够得到更多的帮助 - 我感觉我快到了 – daveybfire 2012-02-27 14:16:53

+0

干杯,看我的编辑。 – 2012-02-27 15:31:06

+0

还没有 - 如果我在上面编辑的“val”中的第1行上用$(“。ms-vb-title”)切换$(“。ms-vb-title”)将返回正确的ListName - 我只是不能工作了解如何访问ms-vb-title。感谢您的所有帮助。 – daveybfire 2012-02-27 15:59:00

像这样的事情?

var found = false; 
$(".ms-WPHeader").each(function(){ 
    if($(this).text() == "ListName") 
     found = true; 
}); 

$(".ms-vb-title").each(function(){ 
    if($(this).text() == "this item" && found == true) 
     $(this).parents('tr:first').hide(); 
}); 
+0

感谢OptimusCrime - 但由于某种原因,这不起作用 - 真正独立设置 - 所以期望的AND不会发生 – daveybfire 2012-02-27 14:15:22