drupal 7 jquery选择器不起作用

时间:2014-01-09 15:03:30

标签: javascript drupal-7

当我点击drupal 7中的一个文本时,我想提醒一些事情。这是我的代码:

(function ($) { 
$("#edit-arrival-city").click(function(){
    alert("fe");
});

})(jQuery);

它不起作用,并且萤火虫没有错误。但是这段代码可行:

(function ($) { 
alert("something");

})(jQuery);

文本字段是:

<input id="edit-arrival-city" class="form-text required form-autocomplete jquery-once-1-processed" type="text" maxlength="128" size="20" value="Arrival City" name="arrival_city" autocomplete="OFF" aria-autocomplete="list">

js代码位于my_module文件夹中,并添加到my_module.info中:scripts [] = js / myjs.js 非常感谢。

2 个答案:

答案 0 :(得分:1)

正如我在评论中所提到的,我假设您在附加事件侦听器时页面上不存在您的元素。如果您的javascript代码段嵌入在元素之后(例如,在结束</body>之前),这将正常工作。如果不是,则需要将其包装在domReady函数中:

$(function() {
    $("#edit-arrival-city").click(function(){
         alert("fe");
    });
});

更好的方法是使用delegated events,这样就可以省略domReady,因为在事件发生时会评估点击目标:

$(document).on("click", "#edit-arrival-city", function(e) {
    alert("fe");
});

只是ftr,您发布的示例是iffy。 ; - )

答案 1 :(得分:0)

只需使用jQuery代替$ 在这种情况下,jQuery :contains() Selector需要使用 不是

drupal_add_js('
            $(document).ready(function(){
                $("p:contains(is)").css("background-color", "yellow");
            });
        ', array('type' => 'inline', 'scope' => 'footer', 'defer' => TRUE));

但是

drupal_add_js('
            jQuery(document).ready(function(){
                jQuery("p:contains(is)").css("background-color", "yellow");
            });
        ', array('type' => 'inline', 'scope' => 'footer', 'defer' => TRUE));

不需要

<script src="https://ajax.googleapis.com