Ненавязчивый JavaScript - Безопасные атрибуты? - PullRequest
2 голосов
/ 25 августа 2009

Я работаю над отделением кода JavaScript от моего HTML. В настоящее время у меня есть код, который выглядит следующим образом:

<div onclick="return do_something_with('100566');" class="clickable">Click Me!</div>

Я бы хотел обменять клик на атрибут, содержащий только параметр, который я передаю методу.

Я использую для этого jQuery со следующим типом кода:

var $j = jQuery;
$j(function(){
    $j('.clickable').live('click',function(){
        param = $j(this).attr('attribute_name');
        do_something(param);
    });
});

Какой атрибут я могу использовать для 'attribute_name', который был бы безопасен для передачи значения этого параметра? Я знаю, что могу использовать идентификатор, но я бы уже определил элемент с таким же идентификатором в другом месте в DOM.

Есть предложения?

Ответы [ 6 ]

4 голосов
/ 25 августа 2009

Я обычно добавляю значимый префикс, например Client-100566, и затем получаю к нему доступ, используя этот код:

var param = $(this).attr("id").split("-")[1];

Редактировать: Удалено предложение по недействительному токену с идентификатором всего номера.

2 голосов
/ 25 августа 2009

Я часто использую id для вещей, которые будут уникальными, или застрял в скрытых <span> с данными.

1 голос
/ 25 августа 2009

Не могли бы вы использовать тег rel на a внутри div? Он позволяет передать 1 параметр или n параметров в doSomething.

<div>
  <a class="clickable" rel="param1 param2 param3">Click Me!</a>
</div>

Так что теперь, когда param отправляется в doSomething, это список, разделенный пробелами, который param.indexOf("param1") может использоваться для проверки, через какие параметры были отправлены?

0 голосов
/ 25 августа 2009

Вы можете просто составить любое имя атрибута.

<div onclick="foo();" silkyvalue="12938">hello</div>

Я бы обычно использовал какой-нибудь формат именования, например, my_somethingID.

0 голосов
/ 25 августа 2009

Вы можете использовать атрибуты class или title в качестве разделенных пробелами списков параметров. Недостатком заголовка является то, что он будет отображаться как всплывающее окно при наведении на ваш элемент:

<div class="clickable param1 param2 param3">

или

<div class="clickable" title="param1 param2 param3">

Вот список других атрибутов , которые вы тоже можете рассмотреть.

0 голосов
/ 25 августа 2009

Почему бы вам не сделать эти a теги? Есть несколько сайтов, которые используют привязку (#someThing) или атрибут rel.

...