2010-04-13 1 views
0

У меня есть ситуация, когда я должен добавить html с jQuery. Внутри этого html есть a-tag с javascript как ссылка.jQuery append HTML с ссылкой javascript

Как я могу это решить?

$(".messages-wrapper").append('<li class="chat-wrapper"><a class="chat" href="javascript:openChat('http://domain.com/Messenger.aspx'">Chat öffnen<span></span><small>Chat öffnen</small></a></li>') 

Спасибо!

+1

В чем вопрос? –

ответ

4

Вы можете избежать одиночных или двойных кавычек в строке с обратной косой чертой.

'... href="javascript:openChat(\'http...\')">...' 
2

Вы просто должны избежать апострофа в строку, используя \':

$(".messages-wrapper") 
.append('<li class="chat-wrapper"><a class="chat" href="javascript:openChat(\'http://domain.com/Messenger.aspx\'">Chat öffnen<span></span><small>Chat öffnen</small></a></li>'); 
3

Вы, вероятно, возникли проблемы из-за кавычек в строке. Одиночные кавычки рано заканчивают строку и вызывают ошибку javascript.

Учитывайте, однако, применение hander в то же самое время, когда вы добавляете html.

var link = $('<li class="chat-wrapper"><a class="chat" href="http://domain.com/Messenger.aspx">Chat öffnen<span></span><small>Chat öffnen</small></a></li>') 
      .find('a') 
      .click(function() { 
       openChat($(this).attr('href')); 
       return false; 
      }); 
link.appendTo(".messages-wrapper"); 
+1

+1, будет деградировать изящно, если javascript не включен, хотя я предполагаю, что страница чата нуждается в JS в любом случае. – Joel

+0

@Joel: немного спор, чтобы рассмотреть, как код, созданный с Javascript, будет вести себя, если Javascript не был включен ... – Guffa

+0

Вам не хватает точки полностью. Если Javascript не включен, код, который создает ссылку, не выполняется. – Guffa

1

Просто используйте вложенное дополнение созданного объекта, чтобы выполнить действие click.

$('.messages-wrapper') 
    .append(
    $('<li class="chat-wrapper" />") 
     .append(
     $('<a class="chat" href="http://domain.com/Messenger.aspx"><small>Chat öffnen</small></a>') 
      .click(function(){ 
      openChat(this.href); 
      return false; 
      }) 
    ) 
);

Это легче читать намерение в любом случае, имхо.

+0

+1 за то, что вы очень jQueryie – TehOne