2014-02-19 3 views
0

Я новичок в написании плагинов JQuery ... и вопрос о возврате селектора, используемого для привязки плагина.Как получить целевой элемент, к которому подключен плагин jquery?

Допустим, мы придаем плагин JQuery элементу, как это ...

$(".someClass").viEdit(); 

И это плагин ...

(function ($) { 
    $.fn.viEdit = function() { 

     var myTarget = "????"; // See Below 

    }; 
}(jQuery)); 

Теперь ... Как я могу извлечь цель, которая была использована для привязки jQuery?

Я не имею в виду $(this), я ищу .someClass в этом случае.

В качестве второго примера, если он был установлен, как это ...

$("#myElement").viEdit(); 

Я искал бы ...

#myElement 

Любая помощь будет принята с благодарностью!

+0

AFAIK, нет никакого способа, чтобы надежно сделать это, вы можете передать элемент в $, и это не имеет никакого текста выбора, как вы описали. – dandavis

ответ

1

Вы можете использовать this.selector:

http://jsfiddle.net/3NAwD/

(function ($) { 
    $.fn.viEdit = function() { 

     console.log(this.selector); 

    }; 
}(jQuery)); 

Обратите внимание, что-то вроде $(document.getElementById('someId')).viEdit(); даст вам пустой selector.

+0

Хорошо, я вижу, что это работает, и спасибо за ваш ответ! Документация показывает, что это было устарело и удалено в версии 9.9, но оно все еще работает. http://api.jquery.com/selector/ – VIDesignz

+0

Интересно, моя скрипка использует 1.11, и она отлично работает. –

+0

Я знаю, это тоже не имеет смысла. Интересно, есть ли для этого работа. – VIDesignz

1

Было .selector имущество, которое не рекомендуется в новых версиях.

рекомендуемый метод теперь передать его в качестве опции, как

(function ($) { 
    $.fn.viEdit = function (options) { 

     var myTarget = options.target; 

    }; 
}(jQuery)); 

$("#myElement").viEdit({ 
    target: '#myElement' 
}); 
+0

Я вижу ... это делает в два раза больше работы, чтобы инициировать его ... geez – VIDesignz

+0

@VIDesignz это потому, что мы не всегда можем доверять значению свойства 'selector' ... предполагаем что-то вроде' $ ('. Myclass'). filter ('[myattribute]'). myplugin() 'то каким должно быть значение' selector' –

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