我是一个明确的新手,所以道歉为垃圾编码!
我写了以下Jquery为我自己做的一个练习项目:
我写了以下Jquery为我自己做的一个练习项目:
当您点击div时,它会添加类“in_answerBox1”,并在已添加类“answerBox_letter1”的回答框中创建一个克隆的div.
最终,网格(或表格中的单元格)中会有许多div,当您点击特定的div时,它会淡出,似乎出现在answerBox中.然后,当您点击回答框中的内容时,网格中的相关div将重新出现,克隆将从该答案框中删除.
但是,如果我点击的东西还没有在答案框中,我现在只需要添加类:即如果原始或克隆中有一个包含“answerBox”的类.
我写了以下知道它不会工作,但它可能会解释我想要更好.
var n = 0; $('#Box').click(function(){ if(!$(this).hasClass('*[class^="answerBox"]')) { $(this).addClass('in_answerBox' + (n+ 1) ); $(this).clone().appendTo('#answerBox').addClass('answerBox_letter' + (n + 1)); n = (n + 1); } });
有什么建议么?
解决方法
我认为事情是在如果条件:
if(!$(this).hasClass('[class^="answerBox"]')) {
尝试这个 :
if(!$(this).is('[class*="answerBox"]')) { //Finds element with no answerBox class } else { //The element has already an answerBox class }
你应该看看toggleClass和is jquery文档.
小提示:而不是n =(n 1)你可以做n :).
编辑:
再次阅读这个问题后,我做了一个full working script:
假设Html是:
<div id="Box"> <p>Answer1</p> <p>Answer2</p> <p>Answer3</p> </div> <div id="answerBox"> </div>
jQuery:
var n = 0; $('#Box p').on('click',function(e) { e.preventDefault(); if(!$(this).is('[class*="answerBox"]')) { n++; $(this).addClass('in_answerBox' + n ); $(this).clone().appendTo('#answerBox').addClass('answerBox_letter' + n); } });
你应该考虑使用data-attributes,他们将更加可靠,然后上课你想做什么.
请注意,如果您希望选择器仅在类属性以单词开头时才匹配,则需要[class ^ =“word”]. *然而搜索整个类的属性.
注意,[class ^ =“word”]将不匹配< div class =“test word”> see here.