下拉菜单转换为单选按钮,不再触发特定功能
Dropdown converted to radio buttons, no longer triggering specific function
我正在构建一个现有的wooccommerce wordpress扩展,并将产品变体(大小、颜色等)下拉菜单转换为单选框。棘手的是,当用户从下拉列表中选择一个选项时,它会触发一些东西,通过ajax自动更新产品库存和价格。
我用这个把输入转换成无线电(从这里):
$('.variations select').each(function(i, select){
var $select = jQuery(select);
$select.find('option').each(function(j, option){
var $option = jQuery(option);
// Create a radio:
var $radio = jQuery('<input type="radio" />');
// Set name and value:
$radio.attr('name', $select.attr('name')).attr('value', $option.val());
// Set checked if the option was selected
if ($option.attr('selected')) $radio.attr('checked', 'checked');
// Insert radio before select box:
$select.before($radio);
$radio.wrap('<div class="vari-option fix" />');
// Insert a label:
$radio.before(
$("<label />").attr('for', $select.attr('name')).text($option.text())
);
});
然后我用了这个
$(':radio').click(function(){
$(this).parent().parent().find('label').removeClass('checked');
$(this).siblings('label').addClass('checked');
$choice = $(this).attr('value');
$('.variations select option[value=' + $choice + ']').attr('selected',true);
});
这样,当选择收音机时,它会在下拉选项中镜像事件。这很好,但不会触发产品信息的刷新。我的猜测是,更改下拉选项的"selected"属性和物理地单击同一个选项是有区别的。有没有人猜测是什么事件触发了我没有考虑的ajax函数?还有一个理想情况下不需要修改wooccommerce原始代码的解决方案?我试过在select选项上使用.click(),但没有什么区别。
以编程方式更改元素的值不会触发change
事件,我假设以编程方式设置<option>
上的selected
属性/属性也不会触发包含<select>
元素上的change
事件。
幸运的是,您可以使用jQuery:以编程方式轻松地触发该事件
$('.variations select option[value=' + $choice + ']').attr('selected',true).parent().trigger('change');
.parent()
调用返回一个包含<select>
元素的jQuery对象,然后.trigger('change')
触发该对象上绑定到change
事件的任何事件处理程序。
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 删除CKEditor工具栏按钮,但不删除功能
- 异步facebook功能
- 下拉菜单转换为单选按钮,不再触发特定功能
- JS点击功能不再工作以更改链接颜色
- Chrome中的打印功能不再工作
- twitter共享回调功能不再工作了吗
- 将两个切换功能合并为一个,切换不再起作用
- 列表框上的EventListener在物品掉落后不再工作[所有javascript功能在成功掉落后停止]
- 为什么Chrome的控制台不再显示功能代码
- 使用 .replacewith 更改图像,但保留 id.之后,图像不再在悬停时触发功能
- 复选框不再检查,如果使用Jquery的切换功能