与Jquery事件相关的问题

时间:2014-03-28 06:51:18

标签: javascript jquery html asp.net

我有以下Jquery

   $('#txtSearch_text').attrchange(function (attrName) {
                    if (counter > 0) {
                        var contains = $('#txtSearch_text').attr('class').indexOf("validation");

                        if ($('#txtSearch_text').val() == '' && contains <= -1) {
                            $('#txtSearch_text').addClass('validation');
                        }
                        else if ($('#txtSearch_text').val() != '' && contains >= 0) {
                            $('#txtSearch_text').removeClass('validation');

                        }
                    }

                    //counter = 1;

                });

txtSearch文本框更改任何属性时,上述jquery将触发。它工作正常。但是我想在Jquery上面触发多个TextBox ..所以如果我有4个TextBox那么我将不得不为4个不同的TextBox编写Jquery 4次。

有没有办法在jquery上面只写一次所有TextBox?

由于

2 个答案:

答案 0 :(得分:1)

您可以为所有四个文本框传递逗号分隔选择器。并在内部使用$(this)来获取当前对象的引用。就像这样:

$('#txtSearch_text,#txtSearch_second,#txtSearch_third,#txtSearch_fourth').attrchange(function (attrName) {
  if (counter > 0) {
        var contains = $(this).attr('class').indexOf("validation");
  if ($(this).val() == '' && contains <= -1) {
  $(this).addClass('validation');
  }
  else if ($(this).val() != '' && contains >= 0) {
  $(this).removeClass('validation');
  }}});

答案 1 :(得分:1)

为所有4个元素添加一个像txtSearch_text这样的公共类,然后将其用作选择器来定位它们

$('.txtSearch_text').attrchange(function (attrName) {
    if (counter > 0) {
        var contains = $(this).attr('class').indexOf("validation");

        if ($(this).val() == '' && contains <= -1) {
            $(this).addClass('validation');
        } else if ($(this).val() != '' && contains >= 0) {
            $(this).removeClass('validation');

        }
    }

    //counter = 1;

});