2009-09-09 2 views
0

Можно ли вызвать метод, который является атрибутом?Вызвать функцию, которая является атрибутом

Я имею в виду, у меня есть этот вход (это создается динамически с помощью JQuery, а также при получении списка компаний, использующих .get()):

<input type="checkbox" onclick="javascript:onWorksiteChecked(this,'Virtus Västerås AB, STOCKHOLM','1:201334661','5566109426');" value="1:201334661"/> 

У меня есть Select All метод, который, как и имя предложить Выбрать все это, и это выполняется как

$("#ulworksites li input:checkbox").each(function() { 
    if ($(this).attr('disabled') == false) { 
     $(this).attr('checked', $("#ckbSelectAll").attr('checked')); 

     // Fire onWorksiteChecked method here 
     // > as suggested by August Lilleaas in his answer 
     $(this).click(); // <-- when this executes I still have the input box to be unchecked, the line above is not perform 
    } 
    }); 

в атрибуте OnClick я получаю JavaScript, что мне нужно запустить для каждого входа (добавить, что в список и добавить компанию импортировать, но как я могу запустить его?

$(this).attr('checked'); 

alt text

как я могу выполнить эту функцию?

в качестве дополнения, это изображение показывает список

alt text

  • , если пользователь нажимает на флажок, он будет выполнять вызов правильно и добавить эту компанию в «корзину»
  • , если пользователь выбирает все (код выше) Я хочу изменить все входы: установите флажок, чтобы проверить и выполнить вызов на каждом из них, поэтому я буду повторно использовать код для добавления каждого элемента в «корзину»

Проблема

по щелчку событие срабатывает, но когда он стреляет у меня еще есть, что поле ввода непроверенного (ведьма не будет выполнять код справа)

+0

Не ставьте функции непосредственно в атрибуты DOM, создавайте ассоциацию в jQuery ... вы не можете ее переместить? – reinierpost

+0

, но мне нужно передать значения в этом, и именно поэтому событие onclick. – balexandre

+0

Вам не нужен 'javascript:' внутри атрибута, который уже рассматривается как выражение сценария. В таких случаях 'javascript:' интерпретируется как метка (см. Https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Statements/label). – Gumbo

ответ

0

Я нашел его ...

мне не нужно, чтобы выбрать все флажки перед обжигом событие щелчка, как JQuery метод клик() будет буквально щелкнуть по флажку, и если он не установлен, он будет проверять и наоборот.

Метод SelectAll нужно будет только быть:

$("#ulworksites li input:checkbox").each(function() { 
    if ($(this).attr('disabled') == false) { 
     $(this).click(); 
    } 
    }); 

Это будет работать как для проверки и снимите флажок.

1

Вы не можете/не должны вызывать этот код непосредственно , Тем не менее, вы можете отключить событие клика, из-за чего вызывается код inline onclick.

$("#the_thing").click(); 

Вы могли, вероятно, удалось выполнить код «непосредственно» путем преобразования его в строку и делать Evals, но применение его косвенно с событием мыши намного лучше имо.

+0

в нижней строке я мог бы сделать: $ (this) .attr ('checked', $ ("# ckbSelectAll"). Attr ('checked')). Click(); ... когда выполняется щелчок(), я все еще не проверяю это поле ввода ... даже если я помещаю его в новую строку как $ (this) .click(); – balexandre

+0

Он будет проверен. Но как все это связано? –

+0

То есть, он будет проверен, если вы проверили его успешно. Если это не проверено в вашем случае, это потому, что вы не сделали это правильно. Дважды проверьте, что '$ (" # ckbSelectAll "). Attr ('checked')' возвращает то, что, по вашему мнению, возвращает, и т. Д. –

0

Чтобы получить ответ на ваш вопрос:

Удалить javascript: из OnClick: это только означает, что для определения протоколов на hrefs.

Чтобы косвенно ответить на ваш вопрос:

Там нет ничего в этих страницах, которые не могут быть выполнены без наклеивания Javascript в атрибутах HTML. Попытка:

  • Цитирование через все флажки;
  • Для каждого флажка храните содержимое с помощью таких вещей, как: $(this).text(); $(this).val(); и т.п.
  • Установить их проверить с: $(this).attr('checked', 'checked');
+0

Я уже делаю это, как $ (this) .attr ('checked', true); Мне нужно выполнить событие click, но в скором времени, когда этот запуск еще не проверен, так как код должен сделать это раньше, см. Комментарии к августу, поскольку я добавил 2 скринкаста, спасибо. – balexandre

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