0
我有一個selectmenu自定義呈現。隨後的點擊會將所選值更改爲第一個選項(不需要的行爲)。在代碼片段中,初始選定值是「2」,這是第5個選項。點擊並選擇另一個選項(不是第一個),到目前爲止這麼好。JQuery UI Selectmenu更改點擊時觸發
再次單擊控件,它將更改爲觸發更改事件的第一個選項。它會爲所有後續點擊做到這一點。
$.widget(".addressmenu", $.ui.selectmenu, {
_renderItem: function(ul, item) {
var li = $("<li>");
$("<span>", {
text: item.label
})
.addClass("ui-selectmenu-item-header addressmenu")
.appendTo(li);
if (item.element.attr("data-address1") != '') {
$("<span>", {
text: item.element.attr("data-address1")
})
.addClass("ui-selectmenu-item-content addressmenu")
.appendTo(li);
}
if (item.element.attr("data-address2") != '') {
$("<span>", {
text: item.element.attr("data-address2")
})
.addClass("ui-selectmenu-item-content addressmenu")
.appendTo(li);
}
if (item.element.attr("data-address3") != '') {
$("<span>", {
text: item.element.attr("data-address3")
})
.addClass("ui-selectmenu-item-content addressmenu")
.appendTo(li);
}
if (item.element.attr("data-address4") != '') {
$("<span>", {
text: item.element.attr("data-address4")
})
.addClass("ui-selectmenu-item-content addressmenu")
.appendTo(li);
}
return li.appendTo(ul);
}
});
$('#ShipToCode').addressmenu({
change: function() {
alert("CHANGED!!!");
}
}).addressmenu("menuWidget");
#checkout .ui-selectmenu-button {
text-align: left;
}
.ui-selectmenu-item-header,
.ui-selectmenu-item-content {
display: block;
}
.ui-menu .ui-menu-item-wrapper.addressmenu {
padding: 2px 0 1px .5em;
}
.ui-state-active.addressmenu,
.ui-widget-content .ui-state-active.addressmenu {
border: none;
color: #00f;
background: #f0f0f0;
}
.ui-selectmenu-item-header.addressmenu.ui-menu-item-wrapper.ui-state-active {
font-weight: bold;
}
<link href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js"></script>
<select name="ShipToCode" id="ShipToCode" value="2">
<option value="-2">Same as Billing</option>
<option value="-1">Add new address</option>
<option value="0001" data-address1="3121 W. 24th Street" data-address2="Suite 1233" data-address4=" USA">ABF Distribution Warehouse</option>
<option value="1" data-address1="3121 W. 24th Street" data-address2="Suite 1233" data-address4=" USA">American Business Futures Dist</option>
<option value="2" selected="selected" data-address1="5411 Kendrick Place" data-address4=" USA">Racine Warehouse</option>
<option value="3" data-address1="5411 Kendrick Place" data-address4=" USA">ABF - Racine Warehouse</option>
</select>
我懷疑這可能是與自定義渲染,但我看不到任何東西,我這樣做可能會導致問題。
這是完美的!它也解決了我想要解決的一個格式問題,並且作爲一個優化代碼的優化(在我的原型工作完成後,它就在我的列表中,我發誓!)將ui-selectmenu-item-header類添加到div導致整個選擇是一個「標題」,所以我刪除了該類,並附加了一個頭類。 –