1

我正在使用jQuery tmpl插件的Knockout.js。我定義的模板有幾個選擇列表。當單擊選擇列表(以容納列表中最長的元素)時,我需要擴展選定項目的寬度(在IE 8上)。當用戶點擊選擇列表來實現這一點時,我正在考慮切換CSS類,但我不知道如何去做。以下是我迄今爲止:在knockout.js中切換css以更改選擇列表寬度

//CSS classes 
<style> 
    .bigclass 
    { 
     width: 200px; 
    } 
    .normalclass 
    { 
     width: auto; 
    } 
</style> 

// Call makeBig javascript method on mouseover. 
<script id='criteriaRowTemplate' type='text/html'> 
    <tr> 
     <td style="width: 23%"><select style="width: 100%" data-bind='event: { mouseover: makeBig, mouseout: makeNormal}, options: criteriaData, optionsText: "Text", optionsCaption: "--Select--", value: SearchCriterion' /></td> 
    </tr> 
</script> 

var CriteriaLine = function() { 
    this.SearchCriterion = ko.observable(); 

    //Control comes to this method. Not sure though if the element captured is correct. 
    makeBig = function(element) { 
     $(element).addClass("bigclass") 
    }; 
    makeNormal = function(element) { 
     $(element).addClass("normalclass") 
    }; 
}; 

所以我的問題是:

  1. 我們如何通過選擇列表中的makeBig javascript函數?我相信我需要更改我的代碼中的以下語法: data-bind ='event:{mouseover:makeBig,mouseout:makeNormal

  2. 我們如何將該類添加到傳遞的選擇列表中。我已經添加了代碼,但它不工作,也許因爲元素沒有價值。

  3. 或者,有沒有其他方法可以確保用戶在IE 8中看到下拉列表的全文?

+0

你就不能綁定到點擊和模糊? –

+0

我可以綁定到點擊。例如在上面的代碼中,我可以在點擊時調用expandOptions方法。但不知道如何在綁定後更改css類。 – Yasir

+0

如果使用jquery,$(element).addClass(「bigclass」) –

回答