2012-03-02 36 views
0

我在jqGrid列中使用jQuery Expander插件。我想將切片點設置爲動態地比未固定的列寬度稍小。我可以很容易地得到整列的列,但我不知道如何將其傳遞給Expander設置。將變量傳遞給jQuery擴展器設置

// get comment column width dyanmically 
var commentswidth = document.getElementById('list_comments').style.width; // will return width in string (e.g. "550px") 
var sliceplace = parseInt(commentswidth) - 40; // convert string to int and subtract offset 
alert(sliceplace); // test to see that it is correct 

// use jQuery Expander to shorted comment boxes 
$('div.expandable span').expander(
{ 
    slicePoint: sliceplace, 
    expandEffect: 'show', 
    expandText: ' ...', 
    expandPrefix: '', 
    userCollapseText: 'less' 
} 
); //end expander 

sliceplace變量得到正確設置,但Expander不起作用(因爲我假設變量不能被讀取)。當我用一個整數代替Expander中的'sliceplace'時,它完全可以工作。

回答

1

我很笨。擴展器使用的字符數量,所以寬度需要被轉換成大量的字符。我選擇了8px的寬度作爲平均字符寬度,它可以工作。

// get comment column width dyanmically 
var commentswidth = document.getElementById('list_comments').style.width; // will return width in string (e.g. "550px") 
alert(commentswidth); 
var sliceplace = parseInt(commentswidth)/8; // convert string to int divide by an average character width to get number of characters to slice at 
sliceplace = parseInt(sliceplace); 
alert(sliceplace); 

// use jQuery Expander to shorten comment boxes 
$('div.expandable span').expander(
{ 
    slicePoint: sliceplace, 
    expandEffect: 'show', 
    expandText: ' ...', 
    expandPrefix: '', 
    userCollapseText: 'less' 
} 
); //end expander 
0

使用Jquery數據方法取而代之。

http://api.jquery.com/jQuery.data/

+0

旁路擴展器完全是你的意思嗎? – user1245530 2012-03-02 18:42:18

+0

我明白了。擴展器需要將字符數轉換爲字符數(ballpark)。當Stackoverflow讓我發佈時,會發布答案。 – user1245530 2012-03-02 20:25:45