gettin jQuery:not()选择器工作

时间:2012-11-13 12:41:30

标签: javascript jquery

在我的代码中,我添加了此变量

var spellSpace = $('td[data-word=' + listOfWords[rndWord].name + ']').hasClass('.highlight-problem:not(.right-word)');

由于某种原因,它不适用于此代码

$('.next-question').click(function () {
    $('td').removeClass('highlight-problem');
    var r = rndWord;
    while (r == rndWord) {
        rndWord = Math.floor(Math.random() * (listOfWords.length));
    }
    $('td[data-word="' + listOfWords[rndWord].name + '"]').addClass('highlight-problem');
    $('td[data-word=' + word + ']').removeClass('wrong-letter').removeClass('wrong-word').removeClass('right-letter');
    var spellSpace = $('td[data-word=' + listOfWords[rndWord].name + ']').hasClass('.highlight-problem:not(.right-word)');
    if (spellSpace) {
        addMedia();
    }
});

它不会返回addMedia()函数,我不知道为什么

有谁能告诉我哪里出错了?

3 个答案:

答案 0 :(得分:3)

hasClass获取类名作为参数,而不是选择器。您可以改为使用is()

var spellSpace = $('td[data-word="' + listOfWords[rndWord].name + '"]')
    .is('.highlight-problem:not(.right-word)');

或者可能是以下内容:

var spellSpace = $('td[data-word="' + listOfWords[rndWord].name
    + '"].highlight-problem:not(.right-word)').length > 0;

答案 1 :(得分:3)

jQuery hasClass函数无法接受css选择器:http://api.jquery.com/hasClass/

使用ishttp://api.jquery.com/is/

答案 2 :(得分:2)

或者,您可以尝试使用jQuery not()过滤器。

var spellSpace = $('td[data-word=' + listOfWords[rndWord].name + ']').hasClass('highlight-problem').not('.right-word');