2012-03-28 2 views
4

Я пытаюсь понять, что делает синтаксис ниже. Это код из Bootstraps popover.jquery/Синтаксис Javascript

//title is a string 
$tip.find('.popover-title')[ $.type(title) == 'object' ? 'append' : 'html' ](title) 
         ^            ^
         What does this symbol mean?     Whats happening here? 
+0

@pimvdb Это было сделано в более ранних версиях jQuery? – Neal

+0

Ничего ... Моя ошибка. – pimvdb

ответ

6

Давайте разбить его:

$tip.find('.popover-title')[ $.type(title) == 'object' ? 'append' : 'html' ](title) 

Она может быть разбита на это:

var found = $tip.find('.popover-title'); 
found[$.type(title) == 'object' ? 'append' : 'html'](title); 

И еще:

var found = $tip.find('.popover-title'); 

if ($.type(title) == 'object') { 
    found['append'](title); 
} else { 
    found['html'](title); 
} 
Побольше

:

var found = $tip.find('.popover-title'); 

if ($.type(title) == 'object') { 
    found.append(title); 
} else { 
    found.html(title); 
} 
+1

Ahhhh Blendy. Вы просто должны были завысить меня: -P – Neal

+0

Это не на 100% правильно. Вы теряете неявное значение 'this' для' found' в назначениях 'func'. – pimvdb

+0

@pimvdb: Что ты имеешь в виду? Я действительно не вижу «этого», используемого в коде. – Blender

5

Это в основном говорит:

if(typeof title == 'object') { 
    $tip.find('.popover-title').append(title); 
} 
else { 
    $tip.find('.popover-title').html(title); 
} 

[...] нотация позволяет динамически выбрать функцию из $tip.find('.popover-title') объекта.

+0

Здесь у вас есть некоторая компенсация;) Действительно ли '$ .type()' фактически выполняет что-либо, кроме wrap 'typeof' в функции? Я действительно не понимаю, почему вам нужно будет использовать '$ .type()' в этом коде вообще ... – Blender

+0

@Blender hehe поэтому я использовал 'typeof'. jQuery любит создавать функции для вещей, которые уже существуют: -P – Neal

+0

@Blender, хотя кажется, что у него могут быть больше возможностей для обнаружения большего количества вещей. http://api.jquery.com/jQuery.type/ – Neal

2

$("selector")["append"](...) равен $("selector").append(...)

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