Javascript 为什么Chrome ignors会点击操作?

Javascript 为什么Chrome ignors会点击操作?,javascript,internet-explorer,google-chrome,firefox,radio-button,Javascript,Internet Explorer,Google Chrome,Firefox,Radio Button,我得到了一些HTML: <input type="radio" name="radioBtn" onClick="rdbtn()" value="1" data-role="admin" data-isprm="true"> <input type="radio" name="radioBtn" onClick="rdbtn()" value="2" data-role="admin" data-isprm="false"> <input type="radio"

我得到了一些HTML:

<input type="radio" name="radioBtn" onClick="rdbtn()" value="1" data-role="admin" data-isprm="true">
<input type="radio" name="radioBtn" onClick="rdbtn()" value="2" data-role="admin" data-isprm="false">
<input type="radio" name="radioBtn" onClick="rdbtn()" value="3" data-role="admin" data-isprm="true">

<a id='MANAGE_SYMBOLS' href='javascript:void(0);' onclick='nosel();' class='actionButton'>Manage Symbols</a><br/><br/>
<a id='EDIT_COUNTRY' href='javascript:void(0);' onclick='nosel();' class='thickbox actionButton'>Edit Country</a><br/><br/>
<a id='LOAD_PARTNERS' href='javascript:void(0);' onclick='nosel();' class='thickbox actionButton'>Import Distributors</a><br/>

<input class="MANAGE_SYMBOLS" type="hidden" value="fetchSymbols.action?action=edit&height=300&width=400&idCountry=COUNTRY_ID">
<input class="EDIT_COUNTRY" type="hidden" value="editCountry.action?action=edit&height=550&width=600&id=COUNTRY_ID">
<input class="LOAD_PARTNERS" type="hidden" value="addDistributors.action?countryId=COUNTRY_ID&height=400&width=350">

<a class="MANAGE_SYMBOLS" href="#"/>
<a class="EDIT_COUNTRY" href="#"/>
<a class="LOAD_PARTNERS" href="#"/>
我想知道为什么这在Firefox和IE上会像预期的那样工作-但是当我在Chrome中选择单选按钮时,它的行为就像单选按钮上的onChange事件一样第一次选择什么都不做,但是第二次选择按预期工作。正如我们所看到的,它指定了onClick=rdbtn事件


您能建议如何解决这个问题吗?

为什么不简单地用jQuery而不是内联javascript编写完整的代码:

$('input[name="radioBtn"]').change(function () {
    var url = "";
    var radioVal = $(this).val();
    var radioPRM = $('input[name="radioBtn"]:checked').data('isprm');
    var role = $('input[name="radioBtn"]:checked').data('role');
    url = $('input[class="MANAGE_SYMBOLS"]').val();
    url = url.replace('COUNTRY_ID', radioVal);
    if (!radioPRM) {
        $('#MANAGE_SYMBOLS').attr('href', url);
        $('#MANAGE_SYMBOLS').off('click');
        $('#MANAGE_SYMBOLS').css('display', 'inline-block');
    } else {
        $('#MANAGE_SYMBOLS').hide();
    }
    url = $('input[class="EDIT_COUNTRY"]').val();
    url = url.replace('COUNTRY_ID', radioVal);
    $('#EDIT_COUNTRY').attr('href', url);
    $('#EDIT_COUNTRY').off('click');
    url = $('input[class="LOAD_PARTNERS"]').val();
    url = url.replace('COUNTRY_ID', radioVal);
    $('#LOAD_PARTNERS').attr('href', url);
    $('#LOAD_PARTNERS').off('click');
    $('#LOAD_PARTNERS').css('display', 'inline-block');
    $('#LOAD_DISTRIBUTORS').hide();
});
代码的问题在于,您只是调用了函数rdbtn onclick,它进一步绑定了更改事件。 相反,您可以删除变更事件绑定,并在onclick=rdbtn中传递它,并在rdbtn代码中使用它

演示:


我删除了内联js代码。将代码放入document.ready或将其包装在函数中,并在document.ready上调用它。

控制台中是否有错误消息?还是它会默默地忽略它?也许你可以摆弄一下小提琴?对不起,我的解决方案没用。我想问一下,为什么混合使用jQuery和原生JS?我不会将.change放入单击某个内容时调用的函数中,而是将其放入$document.ready;方法,完美!工作正常,但此行不起任何作用:$'LOAD_PARTNERS'。关闭'click';。我把它改成了$'LOAD_PARTNERS'.attr'onclick';可以吗?这行实际上删除了点击处理程序。因此,如果要从元素中删除单击功能,则需要使用该行。但是,添加attr'onclick'将毫无用处。最好使用jquery自定义函数。您可以参考jquery的die函数了解更多详细信息。
$('input[name="radioBtn"]').change(function () {
    var url = "";
    var radioVal = $(this).val();
    var radioPRM = $('input[name="radioBtn"]:checked').data('isprm');
    var role = $('input[name="radioBtn"]:checked').data('role');
    url = $('input[class="MANAGE_SYMBOLS"]').val();
    url = url.replace('COUNTRY_ID', radioVal);
    if (!radioPRM) {
        $('#MANAGE_SYMBOLS').attr('href', url);
        $('#MANAGE_SYMBOLS').off('click');
        $('#MANAGE_SYMBOLS').css('display', 'inline-block');
    } else {
        $('#MANAGE_SYMBOLS').hide();
    }
    url = $('input[class="EDIT_COUNTRY"]').val();
    url = url.replace('COUNTRY_ID', radioVal);
    $('#EDIT_COUNTRY').attr('href', url);
    $('#EDIT_COUNTRY').off('click');
    url = $('input[class="LOAD_PARTNERS"]').val();
    url = url.replace('COUNTRY_ID', radioVal);
    $('#LOAD_PARTNERS').attr('href', url);
    $('#LOAD_PARTNERS').off('click');
    $('#LOAD_PARTNERS').css('display', 'inline-block');
    $('#LOAD_DISTRIBUTORS').hide();
});