Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一个悬停函数中的多个悬停和变量_Javascript_Variables_Hover_Jquery Hover - Fatal编程技术网

Javascript 一个悬停函数中的多个悬停和变量

Javascript 一个悬停函数中的多个悬停和变量,javascript,variables,hover,jquery-hover,Javascript,Variables,Hover,Jquery Hover,我想能够在CSS选择器中键入,给它一个标题和描述。基本上,它是一个辅助工具提示,因此当您将鼠标悬停在某个对象上时,它会显示在侧边栏中 我如何简化这一点?我可能有50个或更多,我的代码将是超级冗余的。我已经尝试过创建变量,但是,由于它可以是任何东西,所以我一直停留在hover类上 它们都做相同的事情,只是标题、描述和选择器类不同 $('.class1').hover( function () { $('.my-why').hide();

我想能够在CSS选择器中键入,给它一个标题和描述。基本上,它是一个辅助工具提示,因此当您将鼠标悬停在某个对象上时,它会显示在侧边栏中

我如何简化这一点?我可能有50个或更多,我的代码将是超级冗余的。我已经尝试过创建变量,但是,由于它可以是任何东西,所以我一直停留在hover类上

它们都做相同的事情,只是标题、描述和选择器类不同

    $('.class1').hover(
      function () {
          $('.my-why').hide();
          $('.sidebar').append('<div class="helpertip">' +
          '<h5><a style="color:#fff;">Title #1</a></h5>' +
          '<p id="myWhy">Description #1</p>' +
          '</div>');

      }, function () {
          $('.my-why').show();
          $('.helpertip').remove();
      }
    );

    $('.class2').hover(
      function () {
          $('.my-why').hide();
          $('.sidebar').append('<div class="helpertip">' +
          '<h5><a style="color:#fff;">Title #2</a></h5>' +
          '<p id="myWhy">Description #2</p>' +
          '</div>');

      }, function () {
          $('.my-why').show();
          $('.helpertip').remove();
      }
    );

    $('.class3').hover(
      function () {
          $('.my-why').hide();
          $('.sidebar').append('<div class="helpertip">' +
          '<h5><a style="color:#fff;">Title #3</a></h5>' +
          '<p id="myWhy">Description #3</p>' +
          '</div>');

      }, function () {
          $('.my-why').show();
          $('.helpertip').remove();
      }
    );
$('.class1')。悬停(
函数(){
$('.my why').hide();
$('.sidebar')。追加(''+
“标题#1”+
“

说明#1

”+ ''); },函数(){ $('.my why').show(); $('.helpertip').remove(); } ); $('.class2')。悬停( 函数(){ $('.my why').hide(); $('.sidebar')。追加(''+ “标题#2”+ “

说明#2”+ ''); },函数(){ $('.my why').show(); $('.helpertip').remove(); } ); $('.class3')。悬停( 函数(){ $('.my why').hide(); $('.sidebar')。追加(''+ “标题#3”+ “

说明#3

”+ ''); },函数(){ $('.my why').show(); $('.helpertip').remove(); } );
我有这个,不知道如何有多个变量

var hclass = 
var htitle =
var hdescription = 

$(hclass).hover(
      function () {
          $('.my-why').hide();
          $('.sidebar').append('<div class="helpertip">' +
          '<h5><a style="color:#fff;">' + htitle + '</a></h5>' +
          '<p id="myWhy">' + hdescription + '</p>' +
          '</div>');

      }, function () {
          $('.my-why').show();
          $('.helpertip').remove();
      }
    );
var hclass=
var htitle=
var HDDescription=
$(hclass)。悬停(
函数(){
$('.my why').hide();
$('.sidebar')。追加(''+
''+htitle+''的+
“

”+hdescription+”

”+ ''); },函数(){ $('.my why').show(); $('.helpertip').remove(); } );
那么在包含元素上使用数据属性如何?如果它们有数据标题和数据描述,包含所有相关信息,那么您可以为所有它们提供一个这样的函数:

$("div.classes").hover(function () {
  var myTitle = $(this).data("title");
  var myDescription = $(this).data("description");

      $('.my-why').hide();
      $('.sidebar').append('<div class="helpertip">' +
      '<h5><a style="color:#fff;">'+myTitle+'</a></h5>' +
      '<p id="myWhy">'+myDescription'+</p>' +
      '</div>');

  }, function () {
      $('.my-why').show();
      $('.helpertip').remove();
  }
);
$(“div.classes”).hover(函数(){
var myTitle=$(此).data(“title”);
var myDescription=$(this).data(“description”);
$('.my why').hide();
$('.sidebar')。追加(''+
''+myTitle+''的+
“

”+myDescription'+

”+ ''); },函数(){ $('.my why').show(); $('.helpertip').remove(); } );
当然,您必须为所有相关元素提供一个方便的选择器类

    $('.class1').hover(
      function () {
          $('.my-why').hide();
          $('.sidebar').append('<div class="helpertip">' +
          '<h5><a style="color:#fff;">Title #1</a></h5>' +
          '<p id="myWhy">Description #1</p>' +
          '</div>');

      }, function () {
          $('.my-why').show();
          $('.helpertip').remove();
      }
    );

    $('.class2').hover(
      function () {
          $('.my-why').hide();
          $('.sidebar').append('<div class="helpertip">' +
          '<h5><a style="color:#fff;">Title #2</a></h5>' +
          '<p id="myWhy">Description #2</p>' +
          '</div>');

      }, function () {
          $('.my-why').show();
          $('.helpertip').remove();
      }
    );

    $('.class3').hover(
      function () {
          $('.my-why').hide();
          $('.sidebar').append('<div class="helpertip">' +
          '<h5><a style="color:#fff;">Title #3</a></h5>' +
          '<p id="myWhy">Description #3</p>' +
          '</div>');

      }, function () {
          $('.my-why').show();
          $('.helpertip').remove();
      }
    );
<>但是,如你所说,你宁愿避免用不必要的混乱填充HTML(为什么不让代码更好地与视图分离),考虑一下:

var myCollection = [{
  name: 'class1',
  title: 'Title 1',
  description: 'Lorem Ipsum'
}, {
  name: 'class2',
  title: 'Title 2',
  description: 'Dolor Sit Amet'
}, {
  name: 'class3',
  title: 'Title 3',
  description: 'Vivamus magna justo'
}, {
  name: 'class4',
  title: 'Title 4',
  description: 'Your preferred random description here...'
}];
// I'm going to iterate over my collection of
// objects and simply create a hover for each  one.
$.each(myCollection, function(index, item){
  // this.class refers to the class variable in the current
  //  object of the iterated collection.
  $(this.class).hover(function () {    
    $('.my-why').hide();
    $('.sidebar').append('<div class="helpertip">' +
      '<h5><a style="color:#fff;">'+ this.title +'</a></h5>' +
      '<p id="myWhy">'+ this.description +'</p>' +
      '</div>');
    }, function () {
      $('.my-why').show();
      $('.helpertip').remove();
  });
})
var myCollection=[{
名称:'class1',
标题:“标题1”,
描述:“Lorem Ipsum”
}, {
名称:'class2',
标题:“标题2”,
描述:'Dolor Sit Amet'
}, {
名称:'class3',
标题:“标题3”,
描述:“Vivamus magna justo”
}, {
名称:'class4',
标题:“标题4”,
描述:'此处为您首选的随机描述…'
}];
//我将迭代我的
//对象,只需为每个对象创建一个悬停。
$.each(myCollection,函数(索引,项){
//this.class是指当前
//迭代集合的对象。
$(this.class).hover(函数(){
$('.my why').hide();
$('.sidebar')。追加(''+
''+这个.标题+''的+
“

”+this.description+”

'+ ''); },函数(){ $('.my why').show(); $('.helpertip').remove(); }); })

有了这个,我创建了一个可以迭代的集合,只需依次调用每个集合上的hover。在$.each()中,我可以引用此来获取当前对象,而this.title或this.description可以获取相关数据。

谢谢,我将保留此作为第二个选项,但我更希望将其保留在一个位置,而不是将内容添加到HTML中。我已修改了代码。看看第二个选项,这可能更符合您的要求。通过将所有数据收集在一个集合中,我并没有创建一个庞大的变量集合。通过迭代该集合,我可以创建相同的行为。希望这有帮助!正是我要找的!很高兴这有帮助。