Либо селектор IE8, либо jQuery ButtonSet не всегда возвращают правильный результат (радиокнопки) - PullRequest
0 голосов
/ 21 февраля 2012

В IE8 при запуске приведенного ниже кода предупреждение не имеет смысла. Иногда возвращает первую кнопку, иногда другую.

Я задал такой же вопрос на SO. Возможно, это та же проблема. Непонятно, поэтому я решил задать второй вопрос.

С этим тоже связано. А этот Но они оба пропускают отметку настолько, что я не знаю, что теперь делать.

<link href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.16/themes/south-street/jquery-ui.css" rel='stylesheet' type='text/css'>

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.11/jquery-ui.js"></script>

<script language="javascript">

    $(document).ready(function () {
        $("#toolGroup").buttonset();
        $("#toolGroup").click(
        function () {
            alert($('input:radio[name=marker]:checked').val());
        }
        );
    });

</script>
</head>
<body>

    <div id="toolGroup">
        <input name="marker" type="radio" id="check1" value="tool1" checked /><label for="check1"><img src="/images/tool1.png" width="40" /></label>
        <input name="marker" type="radio" id="check2" value="tool2" /><label for="check2"><img src="/images/tool2.png" width="40" /></label>
        <input name="marker" type="radio" id="check3" value="tool3" /><label for="check3"><img src="/images/tool3.png" width="40" /></label>
    </div>

</body>
</html>

1 Ответ

0 голосов
/ 21 февраля 2012

Поскольку вы связываете событие click с контейнером, оно запускается дважды из-за вашей метки <label for='blah'> для ваших переключателей.Вы можете увидеть, как это происходит, заменив свою функцию следующим:

$(document).ready(function () {
    $("#toolGroup").click(function (e) {
        alert(e.target);
    });
});

Попробуйте вместо этого связать события щелчка со входами.Когда вы щелкаете метку, она вызывает событие щелчка на входе.Итак, что-то вроде этого должно дать вам то, что вы хотите:

$(document).ready(function () {
    $("#toolGroup").buttonset();
    $("#toolGroup input").click(function () {
        alert($('input:radio[name=marker]:checked').val());
    });
});

Я протестировал его на IE8, и он работал для меня, привязывая к входам.

Редактировать: Вы также можете заменить щелчок () для изменения ()

...