jQuery选择器不是html标签或类或id

时间:2013-01-25 13:41:53

标签: jquery css-selectors handle

我想知道以下是否可行。

  • 如果要为ID分配句柄,请将其用作$(“#idhere”)
  • 如果要为类名指定句柄,请将其用作$(“。classname”)
  • 如果要为htmltag分配句柄,请将其用作$(“div”)

让我们说我需要的东西是所有这些东西的组合。 (就此而言,它必须是一个选择器,不能区分上述之一。

例如当我有类似的东西时:

<input name="whatever" my_custom_trigger="my_identifier">

<div id="thisid" class="thisclass" my_custom_trigger="my_identifier">output</div>

我需要分配例如.click到[my_custom_trigger] 因为触发器将分配给所有类型的html项目 (div,输入,跨度或任何需要的东西)

基本上我会有像

这样的东西
$("my_custom_trigger=>my_identifier").click(function(){
    //rest of code
});

这可能吗?

@mods:对不起,如果之前已经处理过,但我发现很难搜索这个问题,因为我不知道用于查找相同问题的关键字!

3 个答案:

答案 0 :(得分:3)

您正在寻找这样的语法

$("[my_custom_trigger='my_identifier']").first().click(function(){
    //rest of code
});

但是使用数据 - 我的自定义触发器作为HTML5标准的属性名称需要数据 - 在所有自定义属性之前。

答案 1 :(得分:0)

如果您的属性可以使用[attribute='value']选择器:

$("[my_custom_trigger='my_identifier']").click(function(){
    //rest of code
});

但是这将搜索DOM中的每个元素,开始时不会那么快,而且它不是有效的html标记,如果你使用的是HTML5,你可以在data-attributename中使用它(并更改属性名称)无论你想要什么,并以这种方式绑定事件,但你应该让sizzle更容易找到元素。

答案 2 :(得分:0)

您可以使用以下方法轻松识别自己的选择器:

$('*[my_custom_trigger="my_identifier"]').click(function(){
    // do what you wish.
});