Использовать строку Javascript в качестве селектора в JQuery? - PullRequest
0 голосов
/ 02 апреля 2012

у меня в Javascript:

 for ( i=0; i < parseInt(ids); i++){
   var vst = '#'+String(img_arr[i]);
   var dst = '#'+String(div_arr[i]);
  }

Как продолжить в jQuery, например:

    $(function() {
     $(vst).'click': function() {
      ....
     }
    }

Ответы [ 5 ]

1 голос
/ 02 апреля 2012

НЕТ, вот так вместо этого

 $(function() {
     $(vst).click(function() {
         ....
     });
 });

Существуют и другие способы в зависимости от вашей версии jquery библиотеки

0 голосов
/ 02 апреля 2012

Вы можете передать String в переменной $() так, как вы хотите.

Например, вы можете сделать:

var id = 'banner';
var sel = '#'+id;
$(sel).doSomething(); //will select '#banner'

Что не так всинтаксис, который вы используете при привязке обработчика кликов.Обычно это работает следующим образом:

$(sel).click(function(){
//here goes what you want to do in the handler
});

См. Документы для .click()

0 голосов
/ 02 апреля 2012
$(function() {
 $(vst).click(function() {
  ....
 }
})

Вы можете использовать любую строку в качестве параметра селектора элемента для jQuery.

Прочитайте документы для получения дополнительной информации.

http://api.jquery.com/click/

http://api.jquery.com/

0 голосов
/ 02 апреля 2012

относительно этого, ваш vst должен быть объектом, который позволяет вам щелкать по нему, и вы назначаете объект или класс для запуска функции и запускаете цикл for ...

поправьте меня, если я ошибаюсь, потому что это то, что я понял из вашего вопроса.

0 голосов
/ 02 апреля 2012

Ваш синтаксис неправильный, но кроме этого у вас не возникнет проблем с этим.Чтобы указать щелчок:

 $(function() {
      for ( i=0; i < parseInt(ids); i++){
          var vst = '#'+String(img_arr[i]);
          var dst = '#'+String(div_arr[i]);

          $(vst).click(function (evt) {
                ...
          });
      }
 })

Обратите внимание, что, поскольку vst изменяется в цикле, ваш код события также должен быть помещен в цикл.

РЕДАКТИРОВАТЬ: Предполагая, что вы хотите то же самоето, что происходит для каждого изображения и каждого div, вы также можете сделать что-то вроде этого:

$(function () {
    function imgEventSpec($evt) {
        // image clicked.
    }

    function divEventSpec($evt) {
        // div clicked.
    }

    for (var idx = 0; idx < img_arr.length && idx < div_arr.length; idx ++) {
        $("#" + img_arr[idx]).click(imgEventSpec);
        $("#" + div_arr[idx]).click(divEventSpec);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...