Почему этот селектор опций не работает - PullRequest
0 голосов
/ 25 июля 2011

Я пытаюсь загрузить новую страницу (новый div, фактически использующий jQuery mobile) в зависимости от того, какой переключатель выбран.

<div id="main_menu">
    <div data-role="fieldcontain">
        <fieldset data-role="controlgroup">
            <div class="radioOne">
                <input type="radio" name="entry" id="radio-choice-1" value="addEmail" checked="checked" />
                <label for="radio-choice-1" class="boldWhite">Add Email Address</label>
            </div>
            <div id="entry_active_contests">
                Active Contest(s)
            </div>
            <input type="radio" name="entry" id="radio-choice-2" value="contest1"  />
            <label for="radio-choice-2" class="boldWhite">Contest</label>
        </fieldset>
    </div>
</div>

Сценарий похож на

$('.choose').click(function(){
    if ($("input[@name='entry']:checked").val() == 'addEmail'){
        window.location.hash ="first";
        alert ('1');
    }
    else if  ($("input[@name='entry']:checked").val() == 'contest1') {
        window.location.hash ="contest";
        alert ('2');
    }   else {
        alert ('3');
    }
});

Все, что я когда-либо получаю, это оповещение 3. Это очень странно, потому что я сделал скрипку, и она отлично работает. http://jsfiddle.net/zkQHP/1/

Есть идеи, почему это не сработает для моего сайта?

Ответы [ 3 ]

0 голосов
/ 25 июля 2011

Вам нужно это

else {
        alert ('3');
    }

Почему бы не сделать два оператора if или оператор if / else?

$('.choose').click(function(){

    var val = $("input[@name='entry']:checked").val();

    if(val == 'addEmail'){
        window.location.hash ="first";
        alert ('1');
    }
    if(val == 'contest1') {
        window.location.hash ="contest";
        alert ('2');
    }   
});

Работает здесь: http://jsfiddle.net/jasongennaro/zkQHP/6/

0 голосов
/ 25 июля 2011

Это прекрасно работает в JSFiddle http://jsfiddle.net/kasdega/QMw9P/ Я согласен с комментарием epascarello, я бы изменил код так:

$('.choose').click(function() {
    var valToCompare = $("input[name='entry']:checked").val();

    if (valToCompare == 'addEmail') {
        window.location.hash = "first";
        alert('1');
    } else if (valToCompare == 'contest1') {
        window.location.hash = "contest";
        alert('2');
    } else {
        alert('3');
    }
});
0 голосов
/ 25 июля 2011

Вы можете легко захватить выбранный переключатель с помощью $(':checked').Я не уверен, почему ты прыгаешь через эти обручи.

$('.choose').click(function(){
    console.log($(':checked').val());
    // You have the selected radio button here
    // Do stuff
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...