理解jquery className操作

时间:2013-11-14 05:42:21

标签: jquery

我有一个包含大量课程的表格。类的格式是“hide-user-name,show-user-name,update-user-select,data-user-types”。在一个js文件中,它遍历类名并进行一些操作。我无法理解这一点。有人可以帮助我理解它在做什么。

$.each(classNames, function(i, className) {
    className = className.split('-');
    var action = className.shift();
    alert("action "+action); --- Gives hide/show/update/data
    alert('.' + className.join('-'));--- .user-name
    if (action === 'show' || action === 'hide') {
      form.find('.' + className.join('-'))[action]();  
    }
});

我不理解最后一行。这条线做了什么?

更新2

var field = $(this), classNames = [], optionClassNames = [], updateField, dataField, options = [];

if (action === 'update') {
  className = className.join('-');
  updateField = form.find('input.' + className + ', select.' + className + ', textarea.' + className);

  if (dataField && dataField.length) {
    updateField.html('');
    options.length = 0;

$.each(dataField, function(x, item) {
  if (typeof item === 'object') {
    options.push('<option class="' + (item.condition || '') + '" value="' + item.value + '">' + (item.title || item.value) + '</option>');
  } else {
      options.push('<option class="' + (item || '') + '" value="' + item + '">' + item + '</option>');
  }
});

updateField.html(options.join(''));

if (updateField.selectmenu) {
  updateField
    .selectmenu('destroy')
    .selectmenu({
      style:'dropdown',
      maxHeight: 200,
      transferClasses: true
    });
}

clearMessages(updateField);
  }
}

由于

1 个答案:

答案 0 :(得分:0)

如果您指的是行form.find('.' + className.join('-'))[action]();

如果会找到form元素的后代,而user-name,则调用该元素上的show()hide

演示:Fiddle