我一直在桌子上撞了一会儿,我希望有人可以提供帮助。基本上在这里我有divs,在创建时分配了一对#class。我正在尝试创建一个事件,在drop上检查事件发生的div内div中的第3个索引项,然后检查它的div对中的同一个项目是否匹配。希望我能在评论中解释这一点。所以这就是我所拥有的:
console.log($(this)[0].classList[3])
// logs pair0 in this case, but could pull any of the pair#s, which is what I need.
var currentPair = $(this)[0].classList[3]
//sets to pair0
console.log(currentPair)
var pairDivs = currentPair.find("div")
//errors: currentPair.find is not a function
var pairDivs2 = $(currentPair).find("div")
//errors: Syntax error, unrecognized expression: ".pair0"
var currentPair2 = '\".' + $(this)[0].classList[3] + '\"'
// my attempt to make it the string ".pair0"
console.log(currentPair2)
// logs ".pair0"
var pairDivs3 = $(currentPair2).find("div")
//errors: Syntax error, unrecognized expression: ".pair0"
var pairDivs4 = $('.pair0').find("div")
//manually putting in the pair, which no longer allows the content to be dynamic
console.log(pairDivs);
//brings up the divs needed
if (pairDivs4[0] != undefined && pairDivs4[1] != undefined) {
//makes sure both buckets have items in them
if (pairDivs4[0].classList[4] == pairDivs4[1].classList[4]) {
//compares 5 class of both divs inside the pair divs
var newStatus = pairDivs4[1].classList[4] + 'Text'
console.log(newStatus)
//in this case logs strongText
$('#currentStatus').addClass(newStatus)
//adds the class strongText to the div with id currentstatus
}
}
基本上我根据任务的复杂程度创建了多个配对存储桶。类列表中的第三项始终是#对。我希望能够把它放在$([变量对#到这里])。find(“div”)所以我可以在drop事件上检查这些对。我不知道为什么我不能让它发挥作用。我环顾四周,找不到任何东西。我是一名新生,所以也许我错过了一些东西。我希望你能提供帮助。
答案 0 :(得分:0)
鉴于$(this)[0].classList[3]
返回字符串'pair0'
- 注意引号是不是字符串的一部分 - 要将其用作类选择器,您需要添加一个'.'
开头,获取字符串'.pair0'
。所以:
var currentPair = '.' + $(this)[0].classList[3]
var pairDivs = $(currentPair).find("div")
演示:https://jsfiddle.net/a6h9ru92/
至于为什么你的尝试不起作用:
var currentPair = $(this)[0].classList[3]
var pairDivs = currentPair.find("div")
//errors: currentPair.find is not a function
在上述情况中,currentPair
只是一个字符串,字符串没有.find()
函数。
var pairDivs2 = $(currentPair).find("div")
//errors: Syntax error, unrecognized expression: ".pair0"
在pairDivs2
情况下,引用的错误没有意义,因为您的代码不在字符串中添加'.'
。我认为你必须将错误信息与下一个错误信息混淆。
var currentPair2 = '\".' + $(this)[0].classList[3] + '\"'
// my attempt to make it the string ".pair0"
console.log(currentPair2)
// logs ".pair0"
var pairDivs3 = $(currentPair2).find("div")
//errors: Syntax error, unrecognized expression: ".pair0"
在pairDivs3
情况下,您实际上是在字符串中附加引号,因此“无法识别的表达式”是因为您正在生成字符串'".pair0"'
(其中单个引号不是字符串值的一部分,但 double 引号是)。
顺便说一下,使用.classList[3]
是一种非常脆弱的工作方式,因为如果你关心的类不完全是.classList
返回的第四个类,那么显然会破坏。使用data-
属性可能要好得多,比如data-pair="1"
而不是class="pair1"
。您可以使用$('[data-pair="1"]')
选择该属性,因此:
var currentPair = $(this).attr('data-pair')
var pairDivs = $('[data-pair="' + currentPair + '"]').find("div")