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();
});
});