Как найти / обнаружить любой textarea на странице с помощью jQuery?

Я хочу поместить вызов функции на мои страницы с именем enableTinyMCE (); в этой функции я хочу увидеть, есть ли какие-либо textarea на моей странице, и если да, то tinyMCE.функция init (). Как определить, есть ли на странице элементы textarea?

7 ответов


if( $('textarea').length > 0 ) {
    ...
}

if($('textarea').length > 0) {
    document.write('we have at least one textarea');
}

или

if($('textarea').length) {
    document.write('we have at least one textarea');
}

прочитайте это, из FAQ:

http://docs.jquery.com/Frequently_Asked_Questions#How_do_I_test_whether_an_element_exists.3F


стоит отметить, что функциональность, которую вы ищете, может быть обработана самим TinyMCE:

если вы выберите до textareas в вашем tinyMCE.вызов init () автоматически преобразует все найденные текстовые области в экземпляры редактора. Если нет текстовых полей, он ничего не будет делать, тихо.

tinyMCE.init({
    ...
    mode : "textareas",
    ...
});

и наоборот, Вы можете сказать TinyMCE преобразовать только текстовые области, которые соответствуют имени класса CSS, используя specific_textareas значение mode параметр.

tinyMCE.init({
   ...
   mode : "specific_textareas",
   editor_selector : "mceEditor"
});

http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/mode


для расширения ответа karim79.

С страница документов jQuery: Примечание: не всегда необходимо проверять, существует ли элемент. Следующий код покажет элемент, если он существует, и ничего не делать (без ошибок), если это не так.

что означает, что вы можете просто сделать:

$(function(){
    $("textarea").each(function(i){
        this.enableTinyMCE();
    })
})

Edit:

для этой цели фактически разрабатывается плагин jQuery. Я бы скачать и попробовать плагин и внести свой вклад в его развитие, если сможете.

jq-tinyMCE


селектор jQuery всегда возвращает массив, даже если совпадающие элементы не найдены. Это означает, что вам нужно проверить длину. Попробуйте это.

if($('textarea').length > 0) {    
 document.write('we have at least one textarea');
}

Я сделал следующее, Как было предложено, однако я все еще хочу вызвать enableTinyMCE, если на моей странице есть textareas. Я не могу вызвать эту функцию в документ.готовый. Смотри В Гугле! Есть идеи?

$(function() {

     if ($('textarea').length > 0)
    {
       var data = $('textarea');
       $.each(data, function(i)
       {
         tinyMCE.execCommand('mceAddControl', false, data[i].id);
       }
       );
    }

});

function enableTinyMCE()
{
        tinyMCE.init({
            plugins: 'paste',
            theme_advanced_toolbar_location: 'top',
            theme_advanced_buttons1: 'pastetext,pasteword,copy,cut,separator,bold,italic,underline,separator,bullist,numlist,separator,undo,redo,separator,link,unlink,separator,charmap,separator,formatselect,separator,code',
            theme_advanced_buttons2: '',
            theme_advanced_buttons3: '',
            mode: 'textareas',
            theme: 'advanced',
            theme_advanced_blockformats: 'None=p,Heading 3=h3,Heading 2=h2'
        });
}

в в TinyMCE.init должен вызываться вне documentready, но $('textarea').длина всегда равна нулю за пределами documentready. Помогите!


Это мое решение

if ($('textarea').length > 0)
    {
       var data = $('textarea');
       $.each(data, function(i)
       {
         tinyMCE.execCommand('mceAddControl', false, data[i].id);
       }
       );

       $('form').bind('form-pre-serialize', function(e) {
            tinyMCE.triggerSave(true,true);
        });
    }

и чтобы включить tinyMCE, я сделал это

<% if (ViewData["TextAreaVisible"] != null && bool.Parse(ViewData["TextAreaVisible"].ToString()) == true)
   {%>
        <script type="text/javascript" src="../../Scripts/tinymce/tiny_mce.js"></script>
        <script type="text/javascript">
           enableTinyMCE();
        </script>
<%} %>

EnableTinyMCE делает это

function enableTinyMCE() {

    tinyMCE.init({
        plugins: 'paste',
        theme_advanced_toolbar_location: 'top',
        theme_advanced_buttons1: 'pastetext,pasteword,copy,cut,separator,bold,italic,underline,separator,bullist,numlist,separator,undo,redo,separator,link,unlink,separator,charmap,separator,formatselect,separator,code',
        theme_advanced_buttons2: '',
        theme_advanced_buttons3: '',
        mode: 'none',
        theme: 'advanced',
        theme_advanced_blockformats: 'None=p,Heading 3=h3,Heading 2=h2'
    });

}