如何在代码的其他部分调用此函数?

时间:2017-04-27 21:38:53

标签: javascript jquery

请原谅我这是一个非常愚蠢的问题。我是JS的新手,我想知道如何在代码的其他部分使用此功能。我查看了教程和其他网站,但是他们定义函数的方式似乎与我在这里的不同。有谁能请我朝正确的方向推动我?

$('.message_div').each(function message_function()
{
    console.log("One liner");
  var th = $(this);
  var ih = $(this).outerHeight(); // outer height
  var oh = $(this).find('.message').outerHeight(); 
    console.log("Oh", oh);
  var txt = $(this).find('.message').html(); 
    console.log("Ih", ih);



   if (oh > ih)
   {
       th.html('');
       th.html('<marquee class="message" direction="up" scrollamount="1" scrolldelay="0">' + txt + '</marquee>')
   }
});

//message_function(); -----> Is this the right way?

2 个答案:

答案 0 :(得分:1)

关于jQuery的作用,这里有几个错综复杂的内容。稍后引用此函数的简单方法是将其存储在变量中:

function message_function()
{
    console.log("One liner");
    var th = $(this);
    //... (rest of function omitted for brevity)
}

$('.message_div').each(message_function);//note that the function handle is used here,
                                         //and not the result of the function which would
                                         //have used the () to call it

///and then later on
message_function();

但是,这里的问题是this。 jQuery将在幕后绑定this(这意味着它在each中工作正常),但是为了正确地单独调用消息函数,您需要准备好绑定元素。例如,

var element = document.querySelector("div");
message_function.call(element);

或者:

var element = document.querySelector("div");
var elementMessage = message_function.bind(element);
elementMessage();

以下是对this是什么以及jQuery如何与之交互的更广泛的解释:https://stackoverflow.com/a/28443915/1026459

答案 1 :(得分:0)

在同一档案中:

  • 将该代码移到函数
  • 调用函数

在该文件之外:

  • 将您刚刚创建的函数移动到.js文件

  • .js文件包含在所需文档中

  • 确保DOM元素属性与脚本中的内容匹配