2014-12-27 2 views
0

Я использую полимер и jquery для изменения атрибута тега, если атрибут одного тега является ложным, используя оператор if/else, в настоящее время тот, который я использую, не работает, как я могу заставить его работать?Невозможно правильно обновить атрибут с помощью jQuery

HTML

<p flex>Would you like notifications on?</p> <paper-toggle-button checked="false" id="onoff"></paper-toggle-button> 
<p flex>Private Message Notifications?</p> <paper-toggle-button checked="true" id="pmn" class="blue"></paper-toggle-button> 
<p flex>Game Update Notifications?</p> <paper-toggle-button checked="true" id="gun" class="lightgrey"></paper-toggle-button> 
<p flex>Website Update Notifications?</p> <paper-toggle-button checked="true" id="wun" class="pink"></paper-toggle-button> 

JavaScript

var main = document.querySelector('#onoff'); 
var pmn = document.querySelector('#pmn'); 
var wun = document.querySelector('#wun'); 
var gun = document.querySelector('#gun'); 

if ($('#onoff').attr('checked') == 'true') { 
    // do this 
} else { 
    pmn.removeAttribute("checked"); 
    wun.removeAttribute("checked"); 
    gun.removeAttribute("checked"); 
    pmn.setAttribute("disabled", "true"); 
    wun.setAttribute("disabled", "true"); 
    gun.setAttribute("disabled", "true"); 

} 

настоящее время у меня #onoffchecked="false" так что другие переключатели будут автоматически отключены, а атрибут checked равнялось бы ложным, но это не делает , кто-нибудь может сказать мне, что я делаю неправильно, и как это исправить?

+0

Просто используйте 'если ($ ("# OnOff"). attr («checked»)) ', чтобы избежать ввода кода [stringly typed (# 7)] (http://blog.codinghorror.com/new-programming-jargon/) – royhowie

+0

Вы проверили код внутри' if' условие выполняется или 'else'? Вы можете сначала поставить «предупреждение» внутри обоих условий и проверить. – WisdmLabs

+0

Я добавил «предупреждение», и предупреждение не появляется, поэтому код не выполняется, почему? – user3339454

ответ

0
jQuery(document).ready(function($){ 
var main = document.querySelector('#onoff'); 
var pmn = document.querySelector('#pmn'); 
var wun = document.querySelector('#wun'); 
var gun = document.querySelector('#gun'); 

if ($('#onoff').attr('checked') === 'true') { 

    alert("Your book is overdue1."); 
} else { 
    //alert("Your book is overdue2."); 
    pmn.removeAttribute("checked"); 
    wun.removeAttribute("checked"); 
    gun.removeAttribute("checked"); 
    pmn.setAttribute("disabled", "true"); 
    wun.setAttribute("disabled", "true"); 
    gun.setAttribute("disabled", "true"); 

} 
}); 
+0

Имеет такой же результат, [jsfiddle] (http://jsfiddle.net/vyzmr2xs/) – user3339454

+0

Вы пропустили '$' for '('#onoff'). Attr ('checked')' в вашем jsfiddle. Кроме того, я надеюсь, что вы используете его внутри сценариев jQuery/JavaScript в конце и здесь вы только что поместили свой код. В противном случае он работает сейчас. – WisdmLabs

+0

Я забыл добавить 'jQuery (document) .ready (function ($)', спасибо за вашу помощь! – user3339454

0

Изменить это следующим образом:

pmn.attr("checked", false); 
wun.attr("checked", false); 
gun.attr("checked", false); 
pmn.attr("disabled", "true"); 
wun.attr("disabled", "true"); 
gun.attr("disabled", "true"); 

Или использовать это, если вы используете JQuery v1.6 +

pmn.prop("checked", false); 
wun.prop("checked", false); 
gun.prop("checked", false); 
pmn.prop("disabled", true); 
wun.prop("disabled", true); 
gun.prop("disabled", true); 
+0

Имеет тот же результат, переключатели все еще активны и 'checked =" true "' – user3339454

+0

Какую версию jquery вы используете? – Haleel

+0

Я использую 2.1.3, здесь: [jsfiddle] (http://jsfiddle.net/vyzmr2xs/) – user3339454

Смежные вопросы