怎么写一个简单的函数?

use*_*179 12 javascript jquery

你如何在jQuery中创建一个函数,调用它,并将变量传递给它?这是Javascript风格:

<script type="text/javascript">
function popup(msg) {
  alert(msg);
}
</script>
Run Code Online (Sandbox Code Playgroud)

然后,您只需在HTML中包含该事件:

<html>
<input type="submit" onclick="popup('My Message')" />
</html>
Run Code Online (Sandbox Code Playgroud)

什么是jQuery相当于这样做?从所有"新手"教程中,它们都是不接受变量的静态函数.例如:

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
  $('button').click(function() {
    alert('hello, world');
   });
});
</script>
Run Code Online (Sandbox Code Playgroud)

我希望能够动态地包含不同的消息.上面的代码会影响所有按钮并吐出"hello,world"的相同消息.

nzi*_*nab 16

如果您希望消息是动态的,那么您将要使用data-attributes:

<input class='message-button-' type="submit" data-message="My Message" />
Run Code Online (Sandbox Code Playgroud)

然后在一个单独的JavaScript文件中:

// equivalent of $(document).ready(function(){...
$(function(){

  // Functionality starts here
  $('.message-button').on('click', function(e){
    alert($(this).data('message'));
  })


});
Run Code Online (Sandbox Code Playgroud)

现在.message-button,只要单击带有类的按钮,该函数就会执行,并且它将使用自定义属性数据消息来显示消息.

希望这可以帮助!:)

更新:

请注意,最好的做法是不加思索地执行javascript.有人提到仍然onclick像你在你的例子中那样使用属性,不要这样做.像我在这里使用jquery的.on('click', function(){})方法一样绑定事件.

如果您的点击项是锚标记,<a>则可以使用以下命令阻止href被跟踪e.preventDefault:

$('a').on('click', function(e){
  e.preventDefault()
})
Run Code Online (Sandbox Code Playgroud)

如果你需要知道,$('.message-button')使用css选择器来获取dom元素.任何有效的CSS选择器通常都可以在那里工作.

一步步

首先,我们需要将所有代码包装在jQuery提供的函数中,该函数等待文档准备好处理javascript操作和dom操作.长格式版本,$(document).ready(function(){ /* CODE GOES HERE */ })但我使用的版本是一个快捷方式$(function({ /* CODE GOES HERE */ }):

$(function(){
})
Run Code Online (Sandbox Code Playgroud)

接下来,我们需要将事件绑定到我们的按钮.既然我们已经给它了类.message-button,我们可以使用jQuery来获取该元素并将'click'事件绑定到它:

$(function(){
  // Functionality starts here
  $('.message-button').on('click', function(e){
    // Code here executes when the input button is clicked
  })


});
Run Code Online (Sandbox Code Playgroud)

事件处理程序内部this被重新绑定,直接指向触发事件的HTML元素.包装$()使我们可以访问jquery方法.因此:$(this)经常使用.jQuery为我们提供了.data()访问data-*元素上任何方法的方法,并为我们提供了值,这就是它alert()正在做的事情.

$(function(){
  // Functionality starts here
  $('.message-button').on('click', function(e){
    alert($(this).data('message'));
  })


});
Run Code Online (Sandbox Code Playgroud)


Ent*_*aah 6

这是我最好的方式,就像javascript一样:

----使用像这样的jQuery来创建函数

<script>$(document).ready(function(){
    popup=function(msg){
      alert(msg);
    }});
</script>
Run Code Online (Sandbox Code Playgroud)

而且您不需要更改正文中的代码

<html>
<input type="submit" onclick="popup('My Message')" />
</html>
Run Code Online (Sandbox Code Playgroud)

以下是http://jsfiddle.net/PLnF3/的示例

----但是等等,如果你只是需要显示一条警告信息,这个样本可能是最好的:

<html>
<input type="submit" onclick="alert('My Message')" />
</html>
Run Code Online (Sandbox Code Playgroud)

您不需要任何javascript或jQuery来执行此操作,只需在按钮上使用alert("我的消息")即可.示例http://jsfiddle.net/PLnF3/1/

----如果你想使用jQuery更好的外观,你可以使用jQuery Dialog().

这里的示例http://howto.software-mirrors.com/2013/09/how-to-make-jquery-popup-window.html 这是代码:

<script>
    $(document).ready(function() {
        popup = function(msg) {
            $("<div>" + msg + "</div>").dialog();
        }
    });
</script>
Run Code Online (Sandbox Code Playgroud)

而且您无需更改身体上的html代码.

<html>
<input type="submit" onclick="popup('My Message')" />
</html>
Run Code Online (Sandbox Code Playgroud)

这里的例子http://jsfiddle.net/PLnF3/2/

请记住,为了能够使用jQuery对话框,您需要jquery.js,jquery-ui.js以及jquery.css主题.更多信息,访问http://howto.software-mirrors.com/2013/09/how-to-make-jquery-popup-window.html