什么是在Jquery中编写以下代码的优化方法

时间:2015-02-04 11:51:22

标签: javascript jquery jquery-ui javascript-events

$('#form').on('focusout', 'div1 select:last-child', function () {
    nFocusOut(this)
});
$('#form').on('focusout', 'div2 select:last-child', function () {
    nFocusOut(this)
});
$('#form').on('focusout', 'div3 input[type=button]:last-child', function () {
    nFocusOut(this)
});
$('#form').on('focusout', 'div4 input[type=button]:last-child', function () {
    nFocusOut(this)
});
$('#form').on('focusout', 'div5 input[type=checkbox]:last', function () {
    nFocusOut(this)
});

3 个答案:

答案 0 :(得分:4)

使用 multiple-selector

  

选择所有指定选择器的组合结果。

<强>代码

$('#form').on('focusout', 'div1 select:last-child,div2 select:last-child,div3 input[type=button]:last-child,div4 input[type=button]:last-child,div5 input[type=checkbox]:last', function () { 
 nFocusOut(this); 
});

答案 1 :(得分:1)

你可以直接进入下面。我认为div1是一个类或ID,因为<div1>或类似的东西是无效的HTML。

$('#form').on('focusout', '[class^=div1] :input:last-child', function () {
    nFocusOut(this);
});

答案 2 :(得分:0)

试试这个:您可以使用逗号分隔的选择器列表并将其传递给事件处理程序

var selector = 'div1 select:last-child, div2 select:last-child, div3 input[type=button]:last-child, div4 input[type=button]:last-child, div5 input[type=checkbox]:last';

$('#form').on('focusout', selector , function () { nFocusOut(this) });


你可以为所有必需的div元素放置class="someClassName"并使用该类选择器绑定事件处理程序,这样无论何时需要在事件处理程序中添加或删除元素,都不需要更改jQuery选择器<登记/> 例如 -

$('#form').on('focusout', '.someClassName', function () { nFocusOut(this) });