使用JQuery函数减少重复的代码

时间:2013-02-12 16:20:47

标签: jquery

在这里找到一个好的jquery弹出功能:

 JAVASCRIPT
 $(function() {
    $("#word1234").live('click', function(event) {
        $(this).addClass("selected").parent().append('
          <div class="messagepop pop">"Lorem ipsum dolor sit amet, 
          consectetur adipisicing elit, sed do eiusmod tempor incididunt</div>');
        $(".pop").slideFadeToggle()
        $("#email").focus();
        return false;
    });
    $(".close").live('click', function() {
        $(".pop").slideFadeToggle();
        $("#contact").removeClass("selected");
        return false;
    });


 HTML
 <a href='/word1234' id='word1234'>Supercalifragilisticexpialidocious</a>

是否有更有效的方法来调用此弹出窗口?如果我在一个页面上有数百个定义,我会在不必要的情况下重复很多代码。

如果我在本机JS中执行此操作,我只需将onClick函数设置为href标记,例如

 <a href="#" id="word1234" onClick="doPop(this, 'Lorem ipsum, ect.')">Supercalifragilisticexpialidocious</a>

是否有类似的方法在JQuery中调用函数?

修改 经过一些调试后,可以在此处找到更新/修复脚本的工作版本:http://jsfiddle.net/N4QCZ/13/ hth。

2 个答案:

答案 0 :(得分:2)

您可以将代码转换为jQuery Plugin,如下所示:

$.fn.myPopup = function(popupText){
    var popupHtml = '<div class="messagepop pop">' + popupText + '</div>';
    this.each(function(){
        $(this).click(function(){

            // Create the popup
            $(this).addClass("selected").parent().append(popupHtml);

            // Find the close button and attach click handler
            $(this).find(".close").click(
                // Find, hide, then delete the popup
                $(this).closest(".pop").slideFadeToggle().remove();;
            );

        });
        return false;
    });

    return this;
};

然后你的代码看起来像这样:

$("#word1234").myPopup("Lorem Ipsum");
$("#wordABCD").myPopup("Hello World");

答案 1 :(得分:1)

不要使用live使用on,直播自1.7版起已被弃用:

你可以给你的链接一个弹出类,然后执行:

$(".popup").on("click", function() {
    // Your code
}); 

通过这种方式,您可以捕获popup类的所有链接,并且不会绑定到100个事件,即:

$("#id1").click() { }
$("#id2").click() { }