以下是我在“_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在我的函数“checkAnimal()”上显示TypeError。它说“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>
非常感谢您的投入!
答案 0 :(得分:1)
从
更改您的代码:此强>
$("#list").find....
以强>
jQuery("#list").find...
原因
默认情况下,Rails包含Prototype javascript库和效果库Scriptaculous。
默认情况下,jQuery使用$作为jQuery的快捷方式。因此,如果您正在使用另一个使用$ variable的JavaScript库,则可能会遇到与jQuery的冲突。为了避免这些冲突,您需要在将jQuery加载到页面之后以及尝试在页面中使用jQuery之前立即将jQuery置于无冲突模式。
参考
http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/
答案 1 :(得分:0)
如果您真的想使用$作为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>
进一步澄清Check this