Jquery选择器问题:在不知道ID的情况下引用特定元素

时间:2009-12-16 20:39:46

标签: jquery jquery-selectors

有没有办法在不知道ID的情况下通过Jquery选择器引用控件?我正在设想一个名为mouseover的函数。我一直在查看文档,但我还没有找到任何东西,并且模糊不清我错过了一些简单的东西。

更新

Zombat,这似乎是合理的,但我在这里有一个问题,似乎阻止我去父母 - >儿童路线。这是一个向用户显示结果的简单搜索页面。它是在名为Ironspeed Designer的代码生成应用程序中创建的。 Ironspeed似乎将它的结果放在一个更新面板内的asp:repeater中,而Ajax的神奇之处在于获取结果集。我说这一切都是因为虽然它有效但我可以看到我应该看到的结果,但我在页面源代码中看不到任何这些内容。我的意思是“任何这些东西”。我可以看到桌子的标题行,但没有任何方式的身体;不是数据,也不是围绕它的标记。 Ironspeed产生的标记可能被描述为火车残骸,这就是我能看到的东西(这足以让一个人去MVC,我告诉你)。

元素是图像。当然,页面上的图像比我可以关注的图像多得多。

5 个答案:

答案 0 :(得分:2)

当使用jquery时,选择器的工作方式与它们在css中的工作方式相同。如果你想选择所有段落,你可以说

$("p").do somthing

它们当然可以变得更加复杂,还可以添加类,名称等,以及一些额外的jquery特定选择器。您可以在api page上阅读有关选择器的更多信息。

选择名为hello

的表单元素
$("input[name=hello]").do something

或类hello

$(".hello").do something

如果您想进行鼠标悬停,可以执行以下操作。

$(".hello").mouseover(function(){
  //do something
}).mouseout(function(){
  //do something
});

<强>更新

使用firefox的Web开发人员工具栏,您可以查看生成的源。这将添加搜索插件生成的所有源。这将有助于您正确选择img。

答案 1 :(得分:2)

选择元素的方法有很多种。我会邀请您查看jQuery Selectors页面,而不是给您详尽的示例列表。

答案 2 :(得分:0)

当然。如果您知道元素相对于其他元素的位置,那么您可以提出一些独特的DOM特征来识别它。

例如,如果您知道您的元素始终是在类“xyz”的div中找到的第一个div,则可以选择它:

$('div.xyz div:first-child')

整个DOM都是你的牡蛎。

最好在可能的情况下使用ID,因为如果DOM的结构将来发生变化,它可能会破坏您的选择器。但通常的做法是以这种方式处理未命名的元素,特别是如果它们是动态的。

答案 3 :(得分:0)

请记住,使用jQuery,您不必将事件(例如鼠标悬停)分配给单个元素。

如果我想给类foo的每个元素一个鼠标悬停事件,我可以这样做:

$('.foo').mouseover(function(event)
{
    alert('Mouse over!');
});

然后,当页面上的foo任何元素被鼠标悬停时,该回调将被触发(this引用回调中的特定对象,根据Javascript通常的事件处理)。

答案 4 :(得分:0)

听起来我在你的网页浏览器中查看View Source,并且因为内容是使用UpdatePanel通过AJAX加载的,所以加载的内容不是发送到原始源的内容的一部分你的浏览器,因此你无法在静态HTML源代码中看到它。

首先,您需要获得一个工具,可以让您检查实时DOM,例如Firefox的Firebug,Internet Explorer的 IE Developer Toolbar 或者Google Chrome或Safari中的 Webkit developer tools 。然后你将能够看到通过AJAX加载的任何元素的id,从而使用一个简单的jQuery选择器来获取它

$('#myElement').doSomething();

<强>更新

如果是图像,您可以尝试使用右键单击时可以看到的属性,并使用selector attributes在选择器中查看其属性。但是请注意,这不是获取元素的最快方法,您最好还是在DOM检查中查找id路由。但是类似下面的内容应该可行

$('img[alt="alt text"][src="http://thesource.com"]').doSomething();