Ниже приведен мой код в "_form.html.erb":
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script language='JavaScript'>
checked = false;
function checkedAll () {
if (checked == false){checked = true}else{checked = false}
for (var i = 0; i < document.getElementById('myform').elements.length; i++) {
document.getElementById('myform').elements[i].checked = checked;
}
}
</script>
<script language='JavaScript'>
function checkAnimal() {
var values = ['1', '2', '4', '5'];
$("#list").find('[value=' + values.join('], [value=') + ']').prop("checked", true);
}
</script>
</head>
<body>
<form id="myform">
Foo1<input type="checkbox" name="foo1"/>
Bar2<input type="checkbox" name="bar2"/>
Rah3<input type="checkbox" name="rah3"/>
Check all: <input type='checkbox' name='checkall' onclick='checkedAll()'>
</form>
<form id='list'><br>
1<input type='checkbox' value='1' />
2<input type='checkbox' value='2' />
3<input type='checkbox' value='3' />
4<input type='checkbox' value='4' />
5<input type='checkbox' value='5' />
CheckAnimal<input type='checkbox' ID="checkAnimalCheckbox" name='checkanimal' onclick='checkAnimal()'><br>
</form>
</body>
Firebug показывает TypeError на моей функции "checkAnimal()". Он говорит: "TypeError: $ (...). Find не является функцией
... ("# list"). find ('[value =' + values.join('], [value =') + ']'). prop ("checked", true... ".
Ниже приведен код функции "checkAnimal()": (Обратите внимание, что код отлично работает в JSFiddle: http://jsfiddle.net/dUHx3/)
<script language='JavaScript'>
function checkAnimal() {
var values = ['1', '2', '4', '5'];
$("#list").find('[value=' + values.join('], [value=') + ']').prop("checked", true);
}
</script>
Ваш вклад очень ценится!
Измените свой код
это
$("#list").find....
в
jQuery("#list").find...
причина
По умолчанию Rails поставляется с библиотекой JavaScript Prototype и библиотекой эффектов Scriptaculous.
По умолчанию jQuery использует $ как ярлык для jQuery. Таким образом, если вы используете другую библиотеку JavaScript, которая использует переменную $, вы можете столкнуться с конфликтами с jQuery. Чтобы избежать этих конфликтов, вам нужно поместить jQuery в режим без конфликтов сразу после его загрузки на страницу и прежде, чем вы попытаетесь использовать jQuery на своей странице.
СПРАВКА
http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/
Существует также альтернатива, если вы действительно хотите использовать $ как псевдоним jQuery, поскольку он делает код кратким и также хочет избежать конфликта с другими библиотеками, используя $.
<script>
jQuery.noConflict(); //
jQuery( document ).ready(function( $ ) {
// You can use the locally-scoped $ in here as an alias to jQuery.
$( "div" ).hide(); // $ here will refer to jQuery.
});
window.onload = function(){
var mainDiv = $( "main" ); // here $ will refer to whatever it is in the other library.
}
</script>
для дальнейшего уточнения Проверьте это
$
? Нравится MooTools?