2011-06-03 35 views
5

有任何人所使用的toChecklist jQuery插件,我想使用它,并按照说明,但什么都没有发生,这里是我的代码:无法使用toChecklist插件


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<html> 
<head> 
<script type="text/javascript" src="jquery-1.6.1.min.js"></script> 
<script type="text/javascript" src="jquery.toChecklist.min.js"></script> 

<!-- Stylesheet --> 
<link type="text/css" rel="stylesheet" media="screen" href="jquery.toChecklist.min.css" /> 

<!-- Code to run toChecklist --> 
<script type="text/javascript"> 
    $(function() { 
     $('mySelectBox').toChecklist(); 
    }); 
</script> 

</head> 
<body> 

<select id="mySelectBox" multiple="multiple"> 
    <option>Value 1</option> 
    <option>Value 2</option> 
    <option>Value 3</option> 
</select> 

</body> 
</html> 

回答

0

好,问题是,你有 <html>标签:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<html> 

这会防止你的页面的验证,并可能导致一些其他的ISSU es也是如此。如果您打算使用XHTML(我猜你是),请删除第二个<html>标记。

+0

这虽然是一个不受欢迎的问题,但对所讨论的问题没有任何影响。 – Crollster 2011-06-07 02:54:30

-1

好吧,你面临的问题可以很容易固定,存在这里:

<script type="text/javascript"> 
    $(function() { 
     $('mySelectBox').toChecklist(); 
    }); 
</script> 

我认为这是造成问题,因为浏览器可能没有充分执行加载的DOM之前代码,因此jQuery无法对DOM中不存在的内容执行操作。

将其更改为以下内容,一切都将正常工作:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#mySelectBox').toChecklist(); 
    }); 
</script> 

的。就绪()方法对DOM完全执行之前等待的负荷。此外,您需要在任何元素ID前添加一个散列(“#”),以向jQuery表明它们是Ids而不是某种其他类型的标识符(例如类等)。

我意识到自从你问这个问题以来已经有几天了,但希望这能提供一些帮助。

+0

这应该做的完全一样的事情:http://api.jquery.com/jQuery/#jQuery3 – mc10 2011-06-07 04:05:01

+0

它可能是文档声称,但没有工作时,我把OP的代码粘贴到HTML文件。 ;-)唯一的另一个区别是向id添加了一个散列 - 我确实在HTML文件中尝试过,但它没有提供清单。但是,当我明确使用.ready()时,它工作。 – Crollster 2011-06-07 04:18:16

+0

添加.ready()方法使插件完美运行......非常感谢 – Mike 2011-06-08 00:51:06

7

toChecklist插件使用两个老的和过时的方式 访问的innerHTML,为例子:

var labelText = $(this).attr('innerHTML'); 
checkboxValue = this.innerHTML; 

这是不是在jQuery的可用1.6+

所以,你有两个选择,使其为你工作。

  1. 将您的jquery降级到版本1.5或更低版本。
  2. 改变这些线路(和其他行这样)在toChecklist.js喜欢的东西,这些

    var labelText = $(this).html(); 
    checkboxValue = this.html(); 
    

请参阅http://forum.jquery.com/topic/jquery-change-innerhtml了解更多详情。

+1

很高兴您找到了解决方案。我通过电子邮件发送给插件作者。顺便说一句,你可能意思是'checkboxValue = $(this).html();' – yitwail 2011-07-25 17:25:45