Объедините две функции .each jquery для sharepoint - PullRequest
0 голосов
/ 27 февраля 2012

У меня есть две функции Jquery, каждая из которых работает независимо на странице sharepoint - однако я хотел бы, чтобы они работали вместе - оба оператора «если» должны быть проверены для выполнения действия, например, Если найдено правильное имя списка И правильный элемент находится в этом списке, ТО скрыть эту строку.

$(".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-title:

<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>

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Предполагая, что ms-vb-title является именем класса элементов списка, а 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();
        }
    }
});

Edit : видя вашу фактическую разметку, вот что должно работать лучше:

$(".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();
    }
});

Edit : при условии, что вы получили сумму .ms-WPHeader, равную .ms-vb-title ив том же порядке вы можете использовать индекс:

$(".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 голосов
/ 27 февраля 2012

Как то так?

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();
});
...