在jQuery中调用基于ID的函数

时间:2011-04-18 08:50:55

标签: jquery html

我有以下功能:

$('#topic').change(function()

它作用于名为#topic的ID。我想对名为

的ID进行此操作
#topic_1 or #topic_2 or #topic_3 etc. 

使用通配符使用jQuery有一种简单的方法吗?另外,我如何提取数字1,2或3,并找出标记为key_1,key_2或key_3的另一个元素的值。我希望这对你有意义。

对不起,这是一个基本问题,但我是jQuery的新手

5 个答案:

答案 0 :(得分:5)

如果您愿意,可以使用id(以下更多选项),使用"attribute starts with"选择器:

$('[id^="topic"]').change(function() { ... });

该选择器将匹配“topic”开头的任何id值。一定要把参数(“主题”)放在引号中,它是(现在)必需的。

如果您有这些的简短列表,您可以选择直接列出它们:

$('#topic1, #topic2, #topic3').change(function() { ... });

或者您可以选择他们共同的其他特征。热门选择:

  • 他们的class,使用class selector

    $('.theClass').change(...);
    
  • 他们在DOM中的位置。例如,如果您想在表单中的所有字段上观看change事件,您可以从表单开始并使用descendant selector,也许使用:input之类的限定符(匹配inputselecttextarea元素),如下所示:

    $('#formId :input').change(...);
    
  • 他们使用"attribute equals" selector"attribute contains"选择器等共享的其他一些属性

正如您所看到的,您拥有a lot to choose from,而不仅仅是ID和类。请注意,在大多数浏览器中,类选择器将是最快的,但这仅适用于非常复杂的页面,或者当您查找选择器 lot 时。一如既往地优化是否/何时发现问题。

答案 1 :(得分:1)

为什么不使用类选择器呢?为所有元素提供一个名为“topic”的CSS类,并按如下方式修改代码:

$('.topic').change(function() { });

答案 2 :(得分:1)

喜欢这个

$('input[id^="topic"]').val('news here!');

$(input[id^="topic"]).change(function(){

  //Do something

 });

答案 3 :(得分:0)

使用class属性..

$('.topic').change(function() { });

答案 4 :(得分:0)

使用类选择器是一种优先的方法。但是,对于任意名称,您还可以实现类似于此的内容:

for (i=0;i<blahblah;i++){
$("#topic_"+i).change(function() {}); }