检测通过另一个javascript函数检查的单选按钮

检测通过另一个javascript函数检查的单选按钮,javascript,jquery,html,Javascript,Jquery,Html,我有一个带有javascript函数的页面,该页面可以更改选择的单选按钮,如下所示: if ($('#tables').hasClass('radiobuttons')){ var tables = $('#tables').find('table'), rows = tables.find('tr'), radios = $('input[type="radio"]'); rows.live('click', function(){

我有一个带有javascript函数的页面,该页面可以更改选择的单选按钮,如下所示:

if ($('#tables').hasClass('radiobuttons')){
    var tables = $('#tables').find('table'),
        rows = tables.find('tr'),
        radios = $('input[type="radio"]');

    rows.live('click', function(){
        var clicked = $(this);
        clicked.find('input[type=radio]').attr('checked', true);
        clicked.parent().find('tr').removeClass('selected');
        clicked.addClass('selected');
    });
}
基本上,这允许用户单击表中某一行的任意位置,并选择相应的单选按钮

所有单选按钮都附带了一个
onchange
事件-除非以这种方式选择单选按钮时会调用该函数

<input type="radio" onchange="someFunction();" name="myradiobutton" value="123">


除了onchange事件外,我如何检测该值是否已更改?

您可以查找引发该事件的目标元素,并做出相应的决定。可以使用事件处理程序中的第一个参数event object获取目标元素

rows.live('click', function(e){
    if($(e.target).is(':radio'){
        //radio button clicked
    }
});

与其在单选按钮上设置属性,不如尝试触发单击事件

clicked.find('input[type=radio')).trigger(“click”)


或者,您可以尝试将单击事件处理程序绑定到用户单击的行,而不是(或附加到)实际的单选按钮。

你问题的最后两句话让我挠头。他说单选按钮有一个onchange事件,当他的javascript手动设置单选按钮的checked属性时不会触发该事件。我同意这句话让我停顿了一下。编辑是为了更清楚@jatrim完全正确地理解了我正在尝试(和失败)做的事情。这创建了一个无限循环,因为上面描述的函数在单选按钮的单击事件中被隐式调用。这似乎是一个错误。您是否需要在行单击和按钮单击时调用此函数?如果您这样做,我想您可以尝试绑定到自定义事件。将onchange处理程序设置为抛出它,并从此函数中抛出相同的事件。然后将当前绑定到onchange的内容绑定到此新事件。(是的,对于一些应该很简单的东西来说,这看起来确实需要做很多工作。)是的-这个函数基本上是检查以执行一些验证。选择它的方式无关紧要-如果状态发生变化,则必须进行验证。触发更改事件是否有意义?根据我的经验,触发“更改”似乎并不总是像您预期的那样有效。但你是对的,我认为在这种情况下是有道理的。