2012-03-17 3 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

Что касается как я могу сказать, эта функция кажется прекрасной. –

+2

Имеет ли ваш идентификатор в нем пробелы? Спецификация HTML говорит, что идентификаторы не могут иметь пробелы. Обычно вы выбираете идентификаторы с символом '#'. То есть '$ ("# MyId")'. –

+0

Почему 'mousedown', а не' click'? также у ids не должно быть таких пространств, я сомневаюсь, что это подтвердится. Вы могли бы использовать 'data' вместо этого ... – elclanrs

ответ

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'; 
    }); 
}); 

Примечание, вне этого, ваш идентификатор не должно иметь пробелов, согласно спецификации HTML. И, если у вас есть действительный идентификатор, вы выбрали бы это так:

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

Если это все равно сделать, если (jQuery ("# A0.R0.Main_Phone_Number")) тогда (сделайте мой другой вызов jQuery) ... – htmlfarmer

+0

Что вы подразумеваете под «другим вызовом»? Что вы пытаетесь выполнить? –

+0

Это поможет, если вы описали, что делает ваш html и что вы на самом деле хотите. –

-4

Если вы хотите сделать вложенным JQuery позвонить вы можете сделать это, как следующее ...

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

Это такой неподходящий ответ. – Jason

+0

@ Джейсон вы можете объяснить, почему для неинформированного, как я – Eoin

Смежные вопросы