parseInt($(this).next(".selectBox").css("border-width"), 10)
結果としてNaNになります。
JsFiddle: http: //jsfiddle.net/nvv35/8/
コードを次のように変更します。
**更新:**境界線の幅を正しく取得するには、境界線の特定の側を指定する必要があります。(チェック:jQuery / javascriptで境界線の幅を取得する方法)
$(document).ready(function() {
$("select").css("display", "none");
$(".selectContainer").css("display", "inline-block");
$(".selectHead").each(function() {
var newWidth = $(this).next(".selectBox").outerWidth();
var borderWidth = parseInt($(this).next(".selectBox").css("border-left-width").replace(/[^0-9]/g,""), 10) ;
if(isNaN(borderWidth)) borderWidth = 0;
newWidth = newWidth - (borderWidth * 2);
$(this).css("width", newWidth + "px");
});
$(".selectHead").on("click", function() {
$(this).next(".selectBox").show();
$(this).closest(".selectContainer").on("mouseleave", function() {
$(this).find(".selectBox").hide();
});
});
$("li", ".optionsBox").on("click", function() {
var newValue = $(this).attr("id").replace(/(.*)-/,"");
$(this).closest(".selectContainer").next("select").val(newValue);
$(this).closest(".selectBox").prev(".selectHead").html($(this).html());
$(this).closest(".selectBox").find(".optionSelected").removeClass("optionSelected");
$(this).addClass("optionSelected");
$(this).closest(".selectBox").hide();
});
});