将选择器传递给jQuery函数

3

我有一个函数,我想让我传递的选择器执行其中包含的过程。以下列出了这些函数:

function menuselector (id){
    $(id).css('background', 'url(../img/black_denim.png) repeat');
    $(id).css('color', '#FFF');

}
function menudeselector (id){
    $(id).css('background', 'none');
    $(id).css('color', '#CE0101');

}

menuselector('mgi');

mgi是一个div标签的ID。


1
你可以将一个对象传递给 css() 方法:css({'background' : 'url(../img/black_denim.png) repeat', 'color' : '#fff'}); 或者你可以将两个方法链在一起(只选择一次):.css('background','url(...) repeat').css('color', '#fff'); 如果你需要多次使用同一个元素,缓存它,将其存储为变量,从而节省查找相关元素所需的时间。 - David Thomas
3个回答

6

使用哈希符号在id前面来指定需要选中的元素,与CSS相同。

如果您传递的是

menuselector('mgi');

您需要调整它,使其成为一个有效的选择器。
$('#' + id).css(...

或者您可以发送有效的选择器。
menuselector('#mgi');

假设您有一个带有该 ID 的元素(您没有展示出来)。
<div id="mgi">

旁注

你不需要一直选中元素,你可以使用链式调用。

$(id).css('background', 'none').css('color', '#CE0101');

// on new lines for readability if there are a lot of actions
$(id).css('background', 'none')
    .css('color', '#CE0101');

或者使用一个对象。
$(id).css({background: 'none', color: '#CE0101'});

1

mgi 不是一个有效的选择器。你应该写成:

menusector('#mgi');

或者

menuselector('.mgi');

根据您想选择ID还是类,可以使用不同的方法。

如果您的函数仅适用于ID,则可以使用popnoodle的解决方案,但是这样限制性较强似乎不太普遍。


1

如果是ID,请传递“#mgi”:

menuselector('#mgi');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接