Как я могу использовать jQuery в родной функции-прототипе String? - PullRequest
0 голосов
/ 09 января 2012

Я хотел бы знать, как я мог бы использовать jQuery внутри собственной функции-прототипа объекта String, например.

Я пробовал:

String.prototype.jQ = function() {
    var $currentObject = $( this );

    return ( $currentObject.length ) ? $currentObject.val() : this;
};

var test = "#txtEmail";
alert( test.jQ() );

Снеудачно.Любое предложение?

Я прекрасно знаю, что могу использовать $( test ).val(), но я хотел бы знать, могу ли я сделать это по-своему.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 09 января 2012

Как ни странно, jQuery принимает только строковые значения примитивов в качестве селекторов, а не объекты String, как и this в методе-прототипе String. Вы можете использовать .valueOf(), чтобы получить примитив:

String.prototype.jQ = function() {
    var $currentObject = $(this<b>.valueOf()</b>);

    return $currentObject.length ? $currentObject.val() : this;
};

Вот демоверсия.

1 голос
/ 09 января 2012

$ (это + ""); // потому что «this» в настоящее время является массивом символов

String.prototype.jQ = function() {
    var $currentObject = $( this + "");

    return ( $currentObject.length ) ? $currentObject.val() : this;
};

var test = "#txtEmail";
alert( test.jQ() );
...