2012-03-17 192 views
7

是否有嵌套的jQuery選擇器。嵌套的jQuery選擇器

例如:

如果頁面也有它的ID = "LeadEditForm_Title"某個地方然後執行以下操作...

jQuery("[id='A0.R0.Main Phone Number']").live('mousedown',function(e) { 
    var container = $(this).width(); 
    var width_offset = -50; 
    var top_offset = 25; 
    var width = (container + width_offset).toString(); 
    jQuery(".mywidget").appendTo(document.body).css('width', width + 'px'); 
    jQuery(".mywidget").appendTo(document.body).css('position', 'absolute'); 
    jQuery(".mywidget").appendTo(document.body).css('top', ($(this).offset().top+top_offset).toString() + 'px'); 
    jQuery(".mywidget").appendTo(document.body).css('left', Math.round($(this).offset().left) + 'px'); 
}); 

問題:

我該怎麼做的如果jQuery(".LeadEditForm_Title")然後做到上述???基本上是一個嵌套的jQuery的電話......我看到他們在那裏的例子:

jQuery(function(){ // my code goes here }); 

但我想它依賴於ID「.LeadEditForm_Title」。

+0

據據我所知,這個功能看起來很好。 – 2012-03-17 21:35:51

+2

你的ID是否真的有空格? HTML規範說ID不能有空格。通常你用'#'選擇ID。即'$( 「#身份識別碼」)'。 – 2012-03-17 21:37:43

+0

爲什麼'mousedown'而不是'click'? ids也不應該有這樣的空間,我懷疑它會驗證。你可以使用'數據'而不是... – elclanrs 2012-03-17 21:53:30

回答

22

要嵌套選擇,您可以使用find

jQuery('#mySelectorId').find('.mySelectorClass') 

這是一樣的這樣做,以及:

jQuery('#mySelectorId .mySelectorClass') 

作爲確保把之間的空間。如果沒有空間,您正在選擇具有該類ID 的元素。

我還要指出,你的代碼可能不是做什麼,你認爲它是:每次

jQuery("[id='A0.R0.Main Phone Number']").live('mousedown',function(e) { 
    var container = $(this).width(); 
    var width_offset = -50; 
    var top_offset = 25; 
    var width = (container + width_offset).toString(); 
    jQuery(".mywidget").appendTo(document.body).css('width', width + 'px'); 
    jQuery(".mywidget").appendTo(document.body).css('position', 'absolute'); 
    jQuery(".mywidget").appendTo(document.body).css('top', ($(this).offset().top+top_offset).toString() + 'px'); 
    jQuery(".mywidget").appendTo(document.body).css('left', Math.round($(this).offset().left) + 'px'); 
}); 

最後4個jQuery(".mywidget")通話將小部件添加到身體。你真的只需要添加一次,並更改CSS每個樣式:

jQuery("[id='A0.R0.Main Phone Number']").live('mousedown',function(e) { 
    var container = $(this).width(); 
    var width_offset = -50; 
    var top_offset = 25; 
    var width = (container + width_offset).toString(); 
    jQuery(".mywidget").appendTo(document.body).css('width', width + 'px').css('position', 'absolute').css('top', ($(this).offset().top+top_offset).toString() + 'px').css('left', Math.round($(this).offset().left) + 'px'); 
}); 

這也可以減少到一個CSS電話:

jQuery("[id='A0.R0.Main Phone Number']").live('mousedown',function(e) { 
    var container = $(this).width(); 
    var width_offset = -50; 
    var top_offset = 25; 
    var width = (container + width_offset).toString(); 
    jQuery(".mywidget").appendTo(document.body).css({ 
     width: width + 'px', 
     position: 'absolute', 
     top: ($(this).offset().top+top_offset).toString() + 'px', 
     left: Math.round($(this).offset().left) + 'px'; 
    }); 
}); 

注意,這個之外,你的ID根據HTML規範,不應該有空格。而且,如果你有一個有效的ID,你會喜歡這個選擇它:

jQuery("#A0.R0.Main_Phone_Number") 
+0

如果有無論如何做到這一點?if(jQuery 「#A0.R0.Main_Phone_Number」))然後(做我的其他jQuery調用)... – htmlfarmer 2012-03-18 00:37:00

+0

你是什麼意思「其他電話」?你想完成什麼? – 2012-03-18 04:23:27

+0

如果你描述你的html在做什麼以及你真正想要發生什麼 – 2012-03-18 04:25:06

-4

如果你想要做一個嵌套的jQuery叫你可以像下面...

$(document).ready(function(){ 
    $(document).ready(function(){ 
    // javascript code here... 
    }); 
}); 
+1

這是一個不合適的答案。 – Jason 2013-07-03 17:43:15

+0

@Jason你能解釋爲什麼像我這樣不知情嗎? – Eoin 2017-11-15 12:56:29