选中元素上的单选按钮更改事件

时间:2013-06-07 08:57:00

标签: javascript jquery html dom

我有一个包含两列的表。

假设第一列包含父名称和第二个子名称。 默认情况下选择第一个父元素。除了第一个元素,我隐藏了每个父母的孩子。

这是一个像Accordion一样的代码(只有一个应该可见):

$(document).ready(function()  {
    var childs = $('.tableCellWBorderGray > div'); // child divs
    childs.hide();

    $("input:radio[name=attribute]").change(function(){
              var parent = $(this).parent().next(); // In our case, second td
              var kids = parent.children();
              childs.slideUp('slow');
              kids.slideDown('slow');
        });
     // select first element and trigger change event to show childs.  
    $('input:radio[name=attribute]:nth(0)').attr('checked',true).trigger('change');
});

这适用于所有其他浏览器。

但是在IE中使用Document Mode: IE7 Standards当我点击第一个选中的元素时,change会被触发。虽然这只发生一次如果我单击选中的元素。我想阻止它。

我调查了Why does the jquery change event not trigger when I set the value of a select using val()?

接受的答案是

  

更改事件需要由...启动的实际浏览器事件   用户而不是通过javascript代码。

有什么工作吗?

完整示例: http://jsfiddle.net/CZZeR/2/

1 个答案:

答案 0 :(得分:1)

您必须覆盖 attr 功能才能触发更改事件

代码:

$(function() {
    var $attrFn = $.fn.attr;
    $.fn.extend({
        attr: function() {
            var attrCatch = $attrFn.apply(this, arguments);
            if (arguments.length) {
                $(this).change();
            }
            return attrCatch;
        }
    });
});

Working fiddle