我的网页上有一些javascript代码正在将一些div加载到页面上。我还想为每个div添加onmouseenter和onmouseleave事件处理程序。我使用jquery添加这些处理程序,但我收到错误:
“对象[对象DOMWindow]的属性'$'不是函数”
我的代码看起来像这样,它在for循环中:
var newItem = document.createElement('div');
newItem.innerHTML = results[i];
newItem.setAttribute("id", "resultDiv_" + i.toString());
dropDown.appendChild(newItem);
//Error on next line...
$("resultDiv_" + i.toString()).bind("mouseenter", function() {
$("resultDiv_" + i.toString()).css({ 'background-color': 'blue' });
});
有没有人知道为什么我会收到此错误,甚至错误意味着什么?
答案 0 :(得分:9)
尝试使用$
替换所有出现的jQuery
。
选择器$("resultDiv_" + i.toString())
也不会返回任何元素。你可能意味着:$("#resultDiv_" + i.toString())
最后确保在DOM准备就绪时执行此代码,即内部:
jQuery(function() {
// Put your code here
});
答案 1 :(得分:4)
你确定jQuery已正确加载吗?它可能与另一个JavaScript库发生冲突吗?
答案 2 :(得分:1)
(function ($) {
// All your code here
})(jQuery);
这解决了我的问题。
答案 3 :(得分:0)
尝试这个怎么样?
var newItem = document.createElement('div');
newItem.innerHTML = results[i];
newItem.setAttribute("id", "resultDiv_" + i.toString());
dropDown.appendChild(newItem);
//Error on next line...
$("resultDiv_" + i.toString()).mouseenter( function() {
$("resultDiv_" + i.toString()).css({ 'background-color': 'blue' });
});
或确保$("resultDiv_" + i.toString())
不是null
。使用Firebug检查元素。
答案 4 :(得分:0)
你不妨试试这个:
var newItem = jQuery('<div id="' + "resultDiv_" + i.toString() + '">+ results[i] + '</div');
jQuery(dropDown).append(newItem);
//Error on next line...
newItem.mouseenter(function(){
jQuery(this).css( 'background-color', 'blue');
});
或者jQuery.noConflict可能会解决这个问题。