Jquery 附加额外文本以选择选项

Jquery 附加额外文本以选择选项,jquery,Jquery,在研究了几种操纵选择菜单选项的方法后,我无法正确地理解它们,我在这里尝试了一下 我有以下代表部分工作代码的小提琴: 当前,如果重新选择一个选项,它会复制文本,但除了不需要的效果之外,我希望直接替换所有选项 我使用的默认代码是: //START Get the stockdata $stock_array = array(); $products_stock_query=tep_db_query("SELECT * FROM

在研究了几种操纵选择菜单选项的方法后,我无法正确地理解它们,我在这里尝试了一下

我有以下代表部分工作代码的小提琴:

当前,如果重新选择一个选项,它会复制文本,但除了不需要的效果之外,我希望直接替换所有选项

我使用的默认代码是:

//START Get the stockdata

$stock_array = array();
$products_stock_query=tep_db_query("SELECT *
                                  FROM " . TABLE_PRODUCTS_STOCK . " 
                                  WHERE products_id=" . (int)$HTTP_GET_VARS['products_id'] ." 
                                  ORDER BY products_stock_attributes");

while($products_stock_values=tep_db_fetch_array($products_stock_query)) {
$str = $products_stock_values['products_stock_attributes'];
$str = substr( $str, ( $pos = strpos( $str, '-' ) ) === false ? 0 : $pos + 1 );
echo '<div class="stockdata" valuestock="'.$products_stock_values['products_stock_quantity'].'" valueid="'.$str.'"></div>';
}
?>

<script>

$('option').each(function () {
    $(this).data('txt', $(this).text());

});
$('select').change(function () {
var str = "";
$( "select option:selected" ).each(function() {
 str += this.text;
    $('option', this).each(function () {
        $(this).text($(this).data('txt'));
    });
    });
    var myCheck = $("body").find("div[valueid=" + $(this).find('option:selected').attr('value') + "]").attr("valuestock");
    if (myCheck === '0'){
    //do nothing
    }else{
   // $(this).find('option:selected').text($(this).find('option:selected').attr('value'));
    $(this).find('option:selected').text(str + ' (' +  $("body").find("div[valueid=" + $(this).find('option:selected').attr('value') + "]").attr("valuestock")+') <?php echo IN_STOCK_ATT; ?>');
}
}).trigger( "change" );

</script>
//开始获取股票数据
$stock_array=array();
$products\U stock\U query=tep\U db\U query(“选择*
从“.表\u产品\u库存”
其中products_id=“(int)$HTTP_GET_VARS['products_id']”
按产品(库存(属性))排序的订单;
而($products\U stock\U values=tep\U db\U fetch\U数组($products\U stock\U query)){
$str=$products\U stock\U values['products\U stock\U attributes'];
$str=substr($str,($pos=strpos($str,'-'))==false?0:$pos+1);
回声';
}
?>
$('option')。每个(函数(){
$(this.data('txt',$(this.text());
});
$('select')。更改(函数(){
var str=“”;
$(“选择选项:选定”)。每个(函数(){
str+=this.text;
$('option',this).each(函数(){
$(this.text($(this.data('txt'));
});
});
var myCheck=$(“body”).find(“div[valueid=“+$(this).find('option:selected')).attr('value')+”]).attr(“valuestock”);
如果(myCheck=='0'){
//无所事事
}否则{
//$(this.find($选项:selected').text($(this.find($选项:selected').attr($值));
$(this.find('option:selected').text(str+'('+$('body”).find(“div[valueid=“+$(this.find('option:selected')).attr('value')+“]).attr(“valuestock”)+”);
}
}).触发(“变更”);

可能就是您想要的:


仅供参考,与其使用隐藏的div来存储相对数据,不如直接在选项上使用data-*属性集。我知道数据属性,但是在这段代码中我无法实现它们。我已经用它做了一些测试。也没有办法将jquery更新到最新版本,因为它会破坏其他一些js代码。这是我必须使用的一个肮脏的技巧。数据属性得到了很好的支持:您有一个
$('option',this)。每个(function(){..})
内部的
$(“选择选项:选中”)。每个(函数(){})
。这是什么?o.oBTW,如果你想在页面加载时设置所有选项文本,为什么要在SELECT元素的onchange事件中设置它?为什么不在呈现HTML时在服务器端设置它?也许我不明白你到底在看什么!!!!!!!!!!!!!代码太少了,我知道不需要太多。但是像你这样的专家是存在的。我是非常感谢您的帮助。很高兴您解决了问题;)
$('select').find('option').each(function () {
    var numInStock = $("body").find("div[valueid=" + this.value + "]").attr("valuestock");
    if (numInStock) {
        $(this).text($(this).text() + '(' + numInStock + ') In Stock');
    } else {
        $(this).text($(this).text() + ' - Out of Stock');
    }
});