仅在单击特定输入按钮时才将类添加到div

时间:2011-08-25 16:04:17

标签: jquery

我有一个显示隐藏div的函数,用于表单中的错误消息传递。

对于这个功能,我需要div根据场景显示在2个不同的位置。因此,如果单击特定的提交按钮,我需要添加一个类。我可以编写一个单独的函数,但我想将它包含在我当前处理div显示的函数中:

function giftAlert(){
    var args = arguments;
    if(args.length > 1) {
        // check that custom alert was called with at least two arguments
        var msg = args[0];
        $('.errorPopup').hide();
      $('.couponPopup').hide();
      $('.promotionPopup').hide();
    $("*").removeClass("alertRed");
        $("*").removeClass("CO_form_alert");


        var div = $(".giftPopup");
        div.css({"display":"block"});
        if (div.length == 0) {
            div = $("<div class='giftPopup' onclick='$(this).hide();'></div>");
            $("body").prepend(div);
        }
       div.html(msg);
        for(var i = 1; i < args.length; i++) {
            var inputID = args[i];
           $("#"+inputID).addClass("CO_form_alert").parent().addClass("alertRed");
       $('#' + inputID).focus();
       $('#' + inputID).keydown(function() { $('.giftPopup').hide(); }).change(function() { $('.giftPopup').hide(); }).blur(function() { $('.giftPopup').hide(); });

        }
     }

}

所以这一位是:

var div = $(".giftPopup");
            div.css({"display":"block"});

我想添加一些逻辑,如果单击input1,那么giftPopup会获得一个额外的类,但仅适用于input1。

帮助?

3 个答案:

答案 0 :(得分:1)

假设你的input1元素由html <input class="input1" type=button />组成,你在jQuery中需要做的就是:

$('.input1').click(function(){
    $('.giftPopup').addClass('whatever');
});

示例:http://jsfiddle.net/ebiewener/Dsb8X/

答案 1 :(得分:1)

我只想将一个点击绑定到input1。这是一个JSFiddle,可以做一些对你有用的事情。

$(document).ready(function() {
    $("#input1").live("click", function() {
        $(".giftPopup").addClass("special");
    });
});

除非您有充分的理由使用onclick,否则应使用jquery使用.live()或.delegate()绑定事件。在这种情况下你也可以使用.click()但是当你在向DOM添加元素时,你必须使用.live()或.delegate(),因为.click()不会对添加到的元素起作用。 DOM后来。

答案 2 :(得分:0)

您可以修改代码中的for循环,如下所示。我希望这就是你要找的东西。

       for(var i = 1; i < args.length; i++) {
           var inputID = args[i];
           var $input = $("#"+inputID);
           $input.addClass("CO_form_alert").parent().addClass("alertRed");
           $input.focus().keydown(function() { $('.giftPopup').hide(); }).change(function() { $('.giftPopup').hide(); }).blur(function() { $('.giftPopup').hide(); });

           if(i == 1){
              $input.click(function(){
                 $(".giftPopup").addClass("specifyClassNameHere");
              });
           }
        }