2014年5月28日

jQuery 1.9之後的attr

今天在寫一個table中tr的click事件,本來想要在某一列上click之後就自動選取前方的checkbox;經過許久的測試後發現事情並不單純,利用以前舊有的attr方法來做竟然發生問題

原來的版本

在這個解法中是利用.attr('checked')來檢查目前checkbox的選取狀態,在第一次run的時候,功能完全正常;但是如果點了第二次他就失靈了,如果利用Chrome developer tool來查看元件,會發現checkbox的後面會忠實地加上checked="checked"這樣的屬性,妙的是checkbox的顯示完全是未選取狀態。

查了jQuery的文件後發現,在jQuery 1.9之後要改用prop,雖然這個在1.6版就有了,但現在看來1.9不用這個會出大問題

http://jquery.com/upgrade-guide/1.9/#attr-versus-prop-

修改後的版本

改用prop來檢測目前的checkbox狀態,並且用prop來變更checkbox狀態。這樣就可以正常呈現想要的功能,不過如果再用Chrome developer tool來看的話,會發現checkbox之後的checked ="checked"根本不會改變...
這真是太詭異了

2014年2月14日

PL/SQL迴圈及暫存資料表

莫名其妙被扯入Oracle EBS系統,被迫學習PL/SQL語法;
以下為建立暫存資料表及利用迴圈取得相對應子項目資料再一起寫入暫存的筆記:

//建立暫存資料表

create GLOBAL TEMPORARY TABLE temp_wales (
  DESCRIPTION VARCHAR2(80 BYTE),
  ASSET_NUMBER VARCHAR2(15 BYTE),
  DATE_PLACED_IN_SERVICE DATE,
  LIFE_IN_MONTHS NUMBER(4,0)
)
ON COMMIT PRESERVE ROWS;

//A取得ID後再去比對B資料表中的Parent_ID

BEGIN

    FOR rec IN (SELECT ID,DESCRIPTION,ASSET_NUMBER,DATE_PLACED_IN_SERVICE,LIFE_IN_MONTHS FROM A )

//開始迴圈
    LOOP

//先寫入父資料的記錄到暫存裡

      INSERT INTO temp_wales( ASSET_NUMBER,DESCRIPTION,DATE_PLACED_IN_SERVICE, LIFE_IN_MONTHS) values( rec.ASSET_NUMBER,rec.DESCRIPTION,rec.DATE_PLACED_IN_SERVICE,rec.LIFE_IN_MONTHS);

//再寫入子資料的記錄到暫存裡

      INSERT INTO temp_wales( ASSET_NUMBER,DESCRIPTION,DATE_PLACED_IN_SERVICE, LIFE_IN_MONTHS)  SELECT ASSET_NUMBER,'改良',rec.DATE_PLACED_IN_SERVICE,rec.LIFE_IN_MONTHS FROM B WHERE Parent_ID=   rec.ID;

//結束迴圈

    END LOOP;

END;

//撈撈看是否有資料了

select * from temp_wales;


2012年11月30日

好濕!好濕啊~


蚤起,沐浴更衣。排腹中穢物,良久!
出浴門,驚覺八點過廿,疾著衣靴。天雨之,披雨簑,名之雙濕;跨鐵輪疾驅。過半,果蓑衣汁水淋漓,衣衫褲襪竟皆濕透,雙濕之稱果不負其名!
忽鐵輪沉重難以駕馭,下車觀之,鐵輪竟開口而笑!本應肥腴身型竟如路邊瘦丐奄奄一息。
攙鐵輪尋巷道中鐵輪工匠,不果,萬念俱灰!
撚袋中銅幣一枚,卜卦之;曰:今天不宜仕事,大喜!乃歸。

2012年7月26日

jQuery的droppable問題

最近在改同事寫的網頁,其中有個動態產生droppable div的功能,程式如下
function createDiv(id){
    item =  '<div id="div_' + id + '">';
    $('#div_map').prepend( item).droppable({
        drop : function(event, ui) {
                $("#div_' + id).hide(); 
                do something ....
        }
    });
}

畫面上還有幾個其他的droppable div,見鬼的是明明動態產生的div是隱藏的,但是當我把dragable的物件拉過去時,他永遠都會觸發我動態新增的最後一個div事件;假如這個func我跑五次,他就會跑到div_5去;這實在是不合理,已經hidden的東西為什麼可以droppable?

測試了好久,感覺應該是物件剛建立就被賦予這個事件出錯,於是改成:


function createDiv(id){
   item =  '<div id="div_' + id + '">';
    $('# div_map ').prepend( item);
    $('#chat_' + id).droppable({
        drop : function(event, ui) {
        $("#div_' + id).hide(); 
            do something ....
        }
    });
}

問題解決!

2012年7月16日

Virtualbox - 變更VirtualBox硬碟大小

當VirtualBox硬碟設定為固定大小時,之後如果發現硬碟太小;這時無法用網路上說的方式增加空間,這世界並沒有想像中美好。

必須先將硬碟檔複製一份:

VBoxManage clonehd old.vdi  new.vdi --variant Standard

如果複製完出現uuid重複的話,再下:

VBoxManage internalcommands sethduuid new.vdi
來重新產生uuid

最後再用:
VBoxManage modifyhd new.vdi --resize 改變之後的大小(MB)

ex: VBoxManage modifyhd new.vdi --resize 200000

別再相信網路上抄來抄去的方法了....那真的不能用...

2010年6月25日

Facebook 加入粉絲按鈕

Facebook以前的加入粉絲按鈕改成讚了,網路上google一下只會發現都是講這件事的文章,但是根本沒人告訴你如何在自己的頁面上產生這個功能,不然就是用Facebook social plugin中的Like Box或是Fan Box;又大又肥,如果我只想要一個讚的按鈕呢?
請改用like button吧!

iframe src="http://www.facebook.com/plugins/like.php?href=這邊 改成你的粉絲專頁的網址就好了&amp;layout=button_count&amp;show_faces=true& amp;width=200&amp;action=like&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:200px; height:21px;" allowTransparency="true"

讚跟加入粉絲現在是一模一樣的東西了,也難怪網路上一堆人要求粉絲頁的"讚"要改回"加入粉絲團"一直沒人理了,因為這樣做Facebook才省事啊!

Facebook iframe 變更長寬

Facebook的API正在新舊交替中,所以很多該死的功能都會相衝;為了在facebook的iframe模式中可以自訂iframe長寬,以前必須使用
FB.CanvasClient.setCanvasHeight 
可是他會和新版的Javascript SDK(connect-js)相衝 ,所以要改用
FB.init({appId: 'app ID', status: true, cookie: true, xfbml: true});
    window.fbAsyncInit = function() {
        FB.Canvas.setSize({width:760,height: 1200 });
    }
如果頁面中有使用動態產生資料而影響某個DIV的寬高的話,一定要先呼叫這個函數,再去呼叫你要變動DIV的script,不然天才的Internet Explorer會瘋掉! ----一個快被facebook搞死的人的衷心建議

精選文章

利用Selenium IDE進行UI測試

安裝與執行 Selenium IDE是Firefox的一個plugin,用來做UI的自動測試:下載網址為http://docs.seleniumhq.org/download/ 安裝後,點一下firefox 的工具 -> Selenium IDE ,就會...