In Magento 2, I'm working on this Knockout JS template: app/code/Magento/Checkout/view/frontend/web/template/shipping-address/shipping-method-item.html
<!--
/**
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<tr class="row method-row"
click="element.selectShippingMethod">
<td class="col col-method">
<input type="radio"
class="radio"
ifnot="method.error_message"
ko-checked="element.isSelected"
ko-value="method.carrier_code + '_' + method.method_code"
attr="'aria-labelledby': 'label_method_' + method.method_code + '_' + method.carrier_code + ' ' + 'label_carrier_' + method.method_code + '_' + method.carrier_code,
'checked': element.rates().length == 1 || element.isSelected" />
</td>
<td class="col col-price">
<each args="element.getRegion('price')" render="" />
</td>
<td class="col col-method"
attr="'id': 'label_method_' + method.method_code + '_' + method.carrier_code"
text="method.method_title" />
<td class="col col-carrier"
attr="'id': 'label_carrier_' + method.method_code + '_' + method.carrier_code"
text="method.carrier_title" />
</tr>
<tr class="row row-error"
if="method.error_message">
<td class="col col-error" colspan="4">
<div role="alert" class="message error">
<div text="method.error_message"></div>
</div>
<span class="no-display">
<input type="radio"
attr="'value' : method.method_code, 'id': 's_method_' + method.method_code" />
</span>
</td>
</tr>
I've overridden this template in my custom theme and would like to add a class a selected CSS to the first <tr> element if the element.isSelected
So far I've tried
<tr class="row method-row"
click="element.selectShippingMethod" data-bind="css: { selected: element.isSelected }">
But this just adds the selected every <tr> from the loop when one is clicked.
-
Do you find the answer ? I try to do the sametweetyx– tweetyx2018年06月04日 17:10:27 +00:00Commented Jun 4, 2018 at 17:10
3 Answers 3
<tr data-bind="css: { cssclassname: element.isSelected }">
html will render
<tr class="cssclassname">
You can use attr for ko bind class like this
<div data-bind="attr: {class: 'yourclasshere', id: 'yourIDhere'}">
-
thanks but as I said in my question, when I tried that it "just adds the selected every <tr> from the loop when one is clicked."Holly– Holly2017年05月16日 10:52:17 +00:00Commented May 16, 2017 at 10:52
This worked for me.
<tr data-bind="css: { 'className': element.isSelected() == (method.carrier_code + '_' + method.method_code)}">
element.isSelected() return a string like freeshipping_freeshipping.
Something like this will help,
<a class="action wishlist" **css="'selected-step' : isMobileFirstStepActive , '':!isMobileFirstStepActive"**>
<span data-bind="i18n: 'Add to wishlist'"></span>
</a>