1

これが私が持っているものです。リスト Web パーツの SharePoint 2010 カスタム ビュー。6 つのカテゴリと 4 つのサブカテゴリがあります。アイテムにはサブカテゴリがなくてもかまいませんが、カテゴリは必要です。

ビューには、横に番号が付いた空白のサブカテゴリが表示されます。それらすべてにクリック イベントをバインドしようとしていますが、ページが更新されるたびに ID が増加します。ベース ID は title[0-9]* [0-9]です。次に、チェックしたい別の ID が下にあり、それは title[0-9]*_[0-9] 1です。

そのため、jQueryの正規表現セレクターを使用してみましたが、正しくバインドされません。オブジェクトは見つかりますが、正しくバインドされません。

IDにバインドして、次のtbodyのonclickイベントをトリガーできるようにする必要があります。次に、そのテキストが " " であるかどうかを確認し、そうであれば tbody を非表示にします。

私のコード:

$(":regex(id,titl[0-9]*-[0-9]_) td a").bind('click', function(){
  var parent = $(this);
  var child = $(this).next("tbody");
  var grandchild = $(this).next("tbody td a");
  //alert(parent + " | " + child + " | " + grandchild ); //always return undefined??
  // Everything below works if I can get the IDs correct for child and grandchild
  if($(grandchild).css('display')!='none'){
    $(grandchild).click();

    if($(grandchild).text()==" "){
      $(child).hide();
    };
  };
}); 
4

3 に答える 3

1

ID を再考する必要があることを強くお勧めします。ID は一貫している必要があります。

絶対に変数 ID を使用する必要がある場合は、他の属性と同様に、セレクターで「id」属性を使用できます。

// Any element, ID starts with "titl"
$('[id^="titl"]')

それをキャプチャして再利用するには、ID に何か問題があることを強くお勧めしますただし、完全を期すために (これを使用する必要を避けるためにどれだけ努力すべきかを十分に強調することはできませんが)、これに基づく何かが良い出発点になるはずです (笑)

// Long-winded messy hideous foul code
var $title = $('[id^="titl"]'),
    title = $title.length && $title.eq(0).attr('id');
if (title !== 0)
{
    $('#' + title + ' #' + title + '1 td a').html('Ow.');
}
于 2012-10-15T23:03:11.587 に答える
0

これを取得できるかどうかはわかりませんが、 で始まる任意の ID をターゲットにしてからtitl、関数内で他の多くの方法で ID に基づいてフィルター処理できます。

$('[id^="titl["]').on('click', function() {
    var check = this.id.charAt(10) == '_', //tenth character is underscore ?
        parent = $(this),
        child = $(this).next("tbody"),
        grandchild = $(this).next("tbody td a");

    if (check) {
        //element matching second selectortype clicked
    }else{
        if (grandchild.is(':visible')){
            grandchild.trigger('click');
            if (grandchild.text()==" ") child.hide();
        }
    }
});
于 2012-10-15T23:02:52.227 に答える
0

ID を管理できるのであれば、ID を再考することに同意します。そうでない場合でも、StartsWith セレクターは上位レベルの要素をすべて取得し、下位レベルの要素にトラバースできます。セレクターを連鎖させるということは、実際のに注意を払うことなく、id の同様のパターンに一致させることができるということを覚えておいてください。

もう 1 つ注意してください: jQuery との正規表現の一致に頼る必要はありませんでした。CSS3 のようなセレクターは、そのためにはあまりにも強力です。

于 2012-10-16T02:20:17.793 に答える