2013-05-25 3 views
0

Цель: Если пользовательский типа элемента (. Ех <media ...>) имеет один из нескольких src расширений файлов, изменить тип пользовательского элемента, чтобы отразить правильный (бывший m4v, jpg ....) элемент для отображения src соответственно.Изменить тип элемента в зависимости от типа Src расширения файла

Я думаю, может быть, мой селектор jquery для элемента media может быть проблемой?

jQuery(function($){ 
    $(document).ready(function($) { 
    $.fn.changeElementType = function(newType) { 
     var attrs = {}; 

     $.each(this[0].attributes, function(idx, attr) { 
      attrs[attr.nodeName] = attr.nodeValue; 
     }); 

     this.replaceWith(function() { 
      return $("<" + newType + "/>", attrs).append($(this).contents()); 
     }); 
    } 
    })(jQuery); 


    $("media").has('[src$=".jpg"]').changeElementType("img"); 
    $("media").has('[src$=".m4v"]').changeElementType("video"); 
}); 

До сих пор при выполнении этого, Chrome консоль сообщения об ошибках, JQuery ... но насколько я могу сказать, все правильно объявлена. Синтаксис или непонимание чего-то?

редактировать: здесь сообщение об ошибке

Uncaught TypeError: object is not a function 
(anonymous function) 
l jquery.min.js:2 
c.add jquery.min.js:2 
v.fn.v.ready jquery.min.js:2 
v.fn.v.init jquery.min.js:2 
v jquery.min.js:2 
(anonymous function) 
(anonymous function) jquery.min.js:2 
v.extend.globalEval jquery.min.js:2 
(anonymous function) jquery.min.js:2 
v.extend.each jquery.min.js:2 
v.fn.extend.domManip jquery.min.js:2 
v.fn.extend.append jquery.min.js:2 
(anonymous function) jquery.min.js:2 
v.extend.access jquery.min.js:2 
v.fn.extend.html jquery.min.js:2 
(anonymous function) jquery.min.js:2 
l jquery.min.js:2 
c.fireWith jquery.min.js:2 
T jquery.min.js:2 
r 

• Это работает в режиме Wordpress noConflict

+0

Какая строка относится к этой ошибке? –

ответ

0

Попробуйте следующее:

РЕДАКТИРОВАНИЕ

Я внесла небольшие коррективы к выходу элемента и меток изображения. он выводил <img></img>, что является недопустимым. Пожалуйста, ознакомьтесь с новыми скрипку

http://jsfiddle.net/denniswaltermartinez/TjGzZ/

http://jsfiddle.net/denniswaltermartinez/TjGzZ/3/

только некоторые мелкие недочеты.

jQuery(function ($) { 

    $.fn.changeElementType = function (newType) { 

     if (!this.length) return; // added 

     var attrs = {}; 

     $.each(this[0].attributes, function (idx, attr) { 
      attrs[attr.name] = attr.value; 
     }); 

     this.replaceWith(function() { 

      var element = $('<' + newType + '/>', attrs); 

      if (newType !== 'img') 
       element.append($(this).contents()); 

      return element; 
     }); 
    }; 

    $('media[src$=".png"]').changeElementType('img'); // changed slightly 
    $('media[src$=".m4v"]').changeElementType('video'); // changed slightly 
}); 

, а затем

$("media").has('[src$=".jpg"]').changeElementType("img");

, что было изменено на

$('media[src$=".png"]').changeElementType('img');

и, конечно, вы можете изменить .png с все, что вы хотите, я просто использовал PNG для тестирования ,

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

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