2015年11月24日 星期二

[JQuery]視條件隱藏GridView中同列首欄的內容


功能的訴求,是送出後仍能檢視,但不能再做修改(除非被更高權限的退回)
(大致上如下圖, 點下「to QC」後,會變成「Keyin OK!」,且轉為唯讀模式)

$(".AR_OK").css("color",
  function () {
        if ($(this).text() > 0) {
            $(this).prev().hide();
            $(this).text("Keyin OK!");

            $(this).parents("tr").first().find(":image").hide();
            return "green";
        }
        else {
            $(this).hide();
            return "black";
        }
    }
 )



這功能的實作,是利用class為「AR_OK」觸發
原本應該是「$(selector).css(attr, value)」,在給value值時,可以利用function(){}做變化
因為不是統一變化, 故有用到「$(this)」,對於選擇性變化的很好用
是沒用each()的另一種遍歷

【Step欄位】
先做if判斷, 是true則轉為唯讀並用綠色的「Keyin OK!」提示使用者, 並隱藏「to QC」的按鈕
如果判斷false, 則不顯示文字,留著「to QC」的按鈕

【第一欄】
四個選一個用吧, 越上面是越土法煉鋼
由於我要隱藏的剛好都是「input type=image」
Selector的部分可以用「:image」直接撈

$(this).parent().prev().prev().prev().prev().prev().prev().prev().children().hide();
$(this).parent().parent().first().children().children(":image").hide();
$(this).parents("tr").first().children().children(":image").hide();
$(this).parents("tr").first().find(":image").hide();

利用.parents("tr")一直退到<tr>
.first()表示要第一個
然後用find(":image")省略n次的children()直接到元素
至於.hide()就隨喜好了, 要改變style或繼續串燒都可以直接接

沒有留言:

張貼留言