0

I am attempting to call a JavaScript function from jQuery. When I try to pass an argument to JavaScript function:

var brandRcObj = "b-brand-box";

$('.b-brand-box').on('mouseleave', function(){
    brandOn(brandRcObj);
});

I am getting the following error:

"Uncaught Error: Syntax error, unrecognized expression: '.b-brand-box'"

I'm doing this because I will use the same mouseleave event multiple times in my project. Therefore I wanted to write a JavaScript function as follows:

function brandOn(brandClass){

  var classObj = "'" + "." + brandClass + "'";
  var imgObj = "'" + "." + brandClass + " " + "img" + "'";

  $(classObj).css({
    backgroundColor: 'white',
    opacity: 1
  });
  $(imgObj).css({
    opacity: 1
  });
}

Thanks for yor help!

4

2 に答える 2

1

'.b-brand-box'は有効なクラス セレクタではありません –.b-brand-boxです。

動的に生成する値を一重引用符で囲んでいますが実際の文字列と JavaScript構文のテキスト リテラルの表記を間違えています。

'.b-brand-box'は JavaScriptコードのテキスト リテラルの表記法であり、".b-brand-box"別の有効な書き方になります。ただし、ソース コードが解析された後のこれらの文字列の両方の.b-brand-boxは、ただ 1 つです。

あなたが実際に望んでいるのは、ただ単に

"." + brandClass;

そしてそれ以上のものはありません。

于 2013-10-18T23:09:33.720 に答える
0

次の場合、これらすべての引用符は必要ありません。

var classObj = "'" + "." + brandClass + "'";
var imgObj = "'" + "." + brandClass + " " + "img" + "'";

あなたに必要なのは

var classObj = "." + brandClass; 
var imgObj = "." + brandClass + " " + "img";

インタープリターは、文字列があることを知っています

于 2013-10-18T23:09:05.430 に答える