web-dev-qa-db-ja.com

drupal_add_jsとインラインコード

IEにサポートを追加するために、hook_alpha_preprocess_pageで追加されたインラインJavaScriptを使用しようとしています。

drupal_add_js('
jQuery(document).ready(function () {
    if (jQuery.browser.msie && jQuery.browser.version < 10) {
            $("li#megamenu-mlid-774 .megamenu-items, li#megamenu-mlid-842 .megamenu-items").columnize({
                width: 420,
                columns: 3
            });
        }
  });', 'inline');

これはページに読み込まれますが、何も起こりません。これは、セレクターが$で始まるためですか?これを機能させるには何に変更すればよいですか?

1
Kevin

はい、それは$で始まるセレクタと関係があります。質問のコードはDrupal 6で機能している可能性があります。jQueryはDrupal 7で変更されています

次のように関数をラップしてみてください:

(function ($) {

 // in this function, you can use the $ which refers to the jQuery object

}(jQuery));

詳細はチェックアウト

http://drupal.org/update/modules/6/7#javascript_compatibility

2
iStryker

最初に、$をjQueryで置き換える必要があります。次に、widthプロパティとcoulmnプロパティを二重引用符で囲む必要があります。つまり、

drupal_add_js('
jQuery(document).ready(function () {
    if (jQuery.browser.msie && jQuery.browser.version < 10) {
            jQuery("li#megamenu-mlid-774 .megamenu-items, li#megamenu-mlid-842 .megamenu-items").columnize({
                "width": "420",
                "columns": "3"
            });
        }
  });', 'inline');
4
Mujtaba Haider