某些文本的jQuery搜索ID

时间:2010-10-26 18:38:16

标签: jquery jquery-selectors

我正在寻找一种在当前点击元素上搜索ID的方法。

示例:

$('.t_element').click(function(){
            if(!$('.t_element [id*=meta]')) {
                transModal($(this));
                translateText();
            }
        });

我基本上需要说明,如果点击的元素id不包含单词“meta”,那么继续使用脚本,但这不起作用。

很抱歉,如果这令人困惑。

谢谢! 丹尼斯

工作示例:

if (!$(this).is('[id*=meta]')) {
    transModal($(this));
    translateText();
}

3 个答案:

答案 0 :(得分:2)

如果元素的ID不会改变,那么我只是将测试包含在选择器中,这样就不会分配不需要的.click()处理程序。

$('.t_element:not([id*=meta])').click(function(){
    transModal($(this));
    translateText();
});

这会使用the :not() selectorthe attribute contains selector来阻止将处理程序分配给ID包含meta的元素。

答案 1 :(得分:1)

尝试length这样:

$('.t_element').click(function(){
   if($('[id*="meta"]', $(this)).length === 0) {
     transModal($(this));
     translateText();
   }
});

或者:

$('.t_element').click(function(){
   if($(this).attr('id').indexOf('meta') <= -1) {
     transModal($(this));
     translateText();
   }
});

答案 2 :(得分:1)

Sarfraz的版本应该有效。另一种方法是使用.is()

if ($(this).is('[id*=meta]')) {
    transModal($(this));
    translateText();
}

或者,正如帕特里克所说,如果你希望如果元素的id包含“meta”,则表示

if ($(this).not('[id*=meta]')) {
    transModal($(this));
    translateText();
}